Разница между инициализацией оператором new и инициализацией литералом в Dart

В чем разница между инициализацией List<int> оператором new и инициализацией литерала в Dart?

Дело 1:

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

случай 2:

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

когда я отправляю аргументы на собственный порт службы, порт службы будет получать разные сообщения. Экземпляр List, инициализированный оператором new, был сериализован в Dart_CObject :: kIntArray, но экземпляр, инициализированный с помощью литерала, был сериализован в объект Dart_CObject с типом 12.


person Andy.Tsao    schedule 07.09.2012    source источник
comment
Я только что отправил это кому-то из команды Dart, который, я думаю, сможет ответить на него.   -  person Shannon -jj Behrens    schedule 08.09.2012


Ответы (1)


Есть одно крошечное отличие - в первом случае вы создаете список фиксированного размера, а во втором случае список может увеличиваться. Если бы вы использовали new List () в первом случае, разницы не было бы. Я не уверен на 100%, так как не могу проверить это прямо сейчас, но я так понимаю это (я точно знаю, что у виртуальной машины есть отдельные классы для списков фиксированного размера и расширяемых списков).

person Ladicek    schedule 08.09.2012
comment
Спасибо за ваш комментарий. но я хочу знать, почему они сериализованы в разные объекты Dart_CObject. - person Andy.Tsao; 08.09.2012
comment
Что делать, если у вас есть новый List<int>()? То есть удалите параметр конструктора. Это разные CO-объекты? - person Seth Ladd; 10.09.2012
comment
Привет, Сет Лэдд, я думаю, что args, созданный в случае 1, и args, созданный в случае 2, являются одним и тем же объектом. Но в моем собственном расширении Dart я получаю другой объект Dart_CObject. args, созданный с помощью нового списка ‹int› (), будет сериализован в объекты CO, как и ‹int› [1,2]. Думаю, я понимаю, что список фиксированного размера отличается от списка с возможностью увеличения, а ‹int› [1,2] создаст список с возможностью увеличения. Большое Вам спасибо. - person Andy.Tsao; 11.09.2012