.NET:ArrayList vs List

在VB.NET中ArrayList和List有什么不同?

ArrayLists基本上被弃用,因为它们是无types的 – 你需要使用它们的强制转换 – 而且它们对于值types来说速度较慢且空间效率较低,因为它们需要将这些项目装箱。

通用列表是与.Net 2.0引入的,是要走的路。 通常一个List比一个数组更好,几乎没有什么缺点。

由于这些集合是.Net基类库的一部分,这个build议也适用于C#和任何支持generics的.Net语言 – 它不是VB.NET特有的。

List是ArrayList的通用实现。 ArrayList将所有对象存储为System.Object ,然后将其转换为适当的types。 ArrayLists是异构的,List可以仅存储一种types的对象 – 该types作为其通用参数提供。

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

由于64位宽的内存引用而不是32位机器上的32位引用和装箱,因此ArrayList在64位上用于存储基本元素时效率更低。

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

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 

Customer(客户)列表只允许从Customerinheritance的Customertypes和types的对象,因此您不能犯这样的错误。

即使您需要将不相关types的对象放在同一个集合中,List(Of Object)也是更好的select,因为它明确指出您正在处理不同的types。

列表可以使用generics,只有特定types的对象才能被放入,这样就可以进行额外的types检查,从而可以减less由于装箱和拆箱而产生的处理时间。 Arraylist不能使用这个。 在几乎所有的情况下,你都会想要使用List而不是Arraylist。