使用新运算符初始化和使用Dart中的文字初始化之间的区别

时间:2012-09-07 18:50:16

标签: dart object-initializers

在Dart中,使用new运算符初始化List<int>并使用文字初始化它有什么区别?

案例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,但是使用literal初始化的实例被序列化为类型为12的Dart_CObject对象。

1 个答案:

答案 0 :(得分:1)

有一个微小的区别 - 在第一种情况下,您正在创建固定大小的列表,而在第二种情况下,列表是可增长的。如果您在第一种情况下使用'new List()',则没有区别。我不是100%肯定,因为我现在无法测试它,但这是我理解它的方式(我确信VM有固定大小的列表和可增长列表的单独类)。