VB.NET中的ArrayList和List有什么区别
答案 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。