var mylist1 = new List<float>(5);
var mylist2 = new List<float>(new float[5]);
mylist1获得5作为容量。 mylist2也获得5分。这两者之间有什么区别,我应该使用哪一个?
答案 0 :(得分:6)
第一个声明创建一个列表,其中包含一个大小为5的基础数组。
第二个声明将数据从传递的数组复制到列表中的基础数组。
所以第二个声明需要:
由于它也更难阅读(将空数组传递给列表构造函数的原因是什么?),根本没有任何理由可以使用第二个而不是第一个。
重载的原因是允许您使用来自另一个数组或可枚举的值预填充列表。例如:
var list = new List<int>(Enumerable.Range(1, 100));
(当然,即便如此,您通常会使用Enumerable.Range(1, 100).ToList()
代替:))
答案 1 :(得分:0)
第一个创建一个容量为5的List,但是如果你访问myList1 [3]则为empty.i.e,你会收到一个错误。 第二个创建一个包含5个元素的float列表。每个元素的值都是0.0,即float
的默认值