Dart List <e>类问题

时间:2019-12-15 07:14:59

标签: flutter dart

对于以下打印,两个打印结果都相同。但是List<Dog> test = <Dog>[];List<Dog> test2 =List<Dog>();之间有区别吗?

void main() {

  List<Dog> test = <Dog>[];
  List<Dog> test2 =List<Dog>();

  Dog dog = Dog(10);

  test.add(dog);
  print(test[0].age);

  test2.add(dog);
  print(test2[0].age);
}


class Dog {

  Dog({this.age});
  int age;

}

1 个答案:

答案 0 :(得分:1)

两者之间没有区别。两者都创建了文档here中所示的可增长列表。

  

默认的可增长列表(由new List()或[]返回)保留一个内部缓冲区,并在必要时增大该缓冲区。这保证了一系列添加操作将在摊销后的固定时间内执行。直接设置长度可能要花费与新长度成比例的时间,并且可能会更改内部容量,因此随后的添加操作将需要立即增加缓冲区容量。

与上面的不同之处在于,如果您要创建一个不可增长的列表。

为此,您将使用

List<Dog> fixedLengthList = new List(5);

在定长列表中,尝试使用可以更改列表长度的操作时会发生错误。