List或ArrayList?(很多项目)

时间:2010-01-11 10:56:38

标签: .net list arraylist

哪一个更节省内存?
哪一个用1000000项更快地工作?
还有什么更好的吗?

2 个答案:

答案 0 :(得分:13)

List<T>通常比使用ArrayList更受欢迎,因为它是一种类型安全的集合。这意味着您可以获得构建时类型安全性。它对值类型的内存效率也更高,因为ArrayList中的条目将被装箱,因为它是一个类型对象的列表:

例如:向List<int>添加整数将使用int[]作为基础数据结构将数据放在堆上。向ArrayList添加整数会将数据放在堆上,但由于底层数据结构是object[],因此必须将数据装箱,这意味着指针也必须存储在堆上这需要更多的内存分配。

ArrayListList<T> : class(参考类型列表)的内存分配完全相同。

答案 1 :(得分:5)

List<T>优于ArrayList

  

特定类型(除Object之外)的Array具有比ArrayList更好的性能,因为ArrayList的元素是Object类型,因此,在存储或检索值类型时通常会发生装箱和取消装箱。但是,如果不需要重新分配,List可以具有与相同类型的数组类似的性能;也就是说,如果初始容量是列表最大大小的良好近似值。

来自ArrayList and List Collection Types