.NET:ArrayList vs List

时间:2008-12-13 17:45:04

标签: .net vb.net collections

VB.NET中的ArrayList和List有什么区别

5 个答案:

答案 0 :(得分:47)

ArrayLists基本上已被弃用,因为它们是无类型的 - 您需要对它们使用强制转换 - 它们对于值类型来说速度较慢且空间效率较低,因为它们需要将项目装箱。

.Net 2.0引入了通用列表,是最佳选择。 List通常比数组更好,但缺点很少。

由于这些集合是.Net基类库的一部分,因此该建议也适用于C#和支持泛型的任何.Net语言 - 它不是特定于VB.NET。

答案 1 :(得分:14)

List是ArrayList的通用实现。 ArrayList将所有对象存储为 System.Object ,然后将其转换为适当的类型。 ArrayLists是异类的,List只能存储一种类型的对象 - 该类型作为其通用参数提供。

List<string> strList; // can store only strings
List<int> intList; // can store only ints
ArrayList someList; // can store anything

答案 2 :(得分:5)

当在64位上用于存储原始元素时,ArrayLists的空间效率更高,因为64位宽的内存引用而不是32位机器上的32位引用和装箱。

有关详细信息,请参阅此处: http://blogs.msdn.com/joshwil/archive/2004/04/13/112598.aspx

答案 3 :(得分:3)

ArrayList允许你写这个:

Dim customers as new ArrayList
Dim c as new Customer
Dim m as new Manager
customers.Add(c)
customers.Add(m)

'This will cause an exception '  
For each c as Customer in customers
console.writeline(c.Name)
Next

List(of Customer)仅允许从Customer继承的Customer类型和类型的对象,因此您不会犯这样的错误。

即使您需要将不相关类型的对象放在同一个集合中,List(Of Object)也是更好的选择,因为它明确表示您正在处理不同类型。

答案 4 :(得分:2)

List可以使用泛型,以便只能将特定类型的对象放入其中,这样您就可以进行额外的类型检查,从而减少因装箱和拆箱而导致的处理时间。 Arraylist不能使用它。几乎在所有情况下,您都希望使用List而不是Arraylist。