1

List<int>Dartでは、新しい演算子で初期化することとリテラルで初期化することの違いは何ですか?

ケース 1:

List<int> args = new List<int>(2);
args[0] = 1;
args[1] = 2;

ケース 2:

List<int> args = <int>[1, 2];

args をネイティブ サービス ポートにポストすると、サービス ポートは異なるメッセージを受け取ります。new 演算子で初期化された List インスタンスは Dart_CObject::kIntArray にシリアル化されましたが、リテラルで初期化されたインスタンスはタイプ 12 の Dart_CObject オブジェクトにシリアル化されました。

4

1 に答える 1

1

小さな違いが 1 つあります。最初のケースでは、固定サイズのリストを作成しますが、2 番目のケースでは、リストは拡張可能です。最初のケースで「new List()」を使用した場合、違いはありません。今はテストできないので 100% 確信はありませんが、これが私が理解している方法です (VM には固定サイズのリストと拡張可能なリスト用に別のクラスがあることは確かです)。

于 2012-09-08T08:34:38.060 に答える