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



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

案例1:

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

案例2:

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

当我将args发布到本机服务端口时,该服务端口将接收不同的消息。用新运算符初始化的List实例被序列化为Dart_object::kIntArray,但用literal初始化的实例被序列化到类型为12的Dart_object对象。

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

最新更新