在VB.NET中,ArrayList和List有什么区别?
ArrayLists基本上已经被弃用了,因为它们没有类型 - 你需要使用强制转换 - 并且对于值类型,它们比较慢且占用更少的空间,因为它们需要装箱。
泛型列表是在 .Net 2.0 中引入的,是一个更好的选择。通常情况下,List比数组更好,缺点很少。
由于这些集合是 .Net 基类库的一部分,因此这个建议也适用于 C# 以及任何支持泛型的 .Net 语言 - 不仅仅是 VB.NET。
List是ArrayList的通用实现。ArrayList将所有对象存储为System.Object,您需要将其转换为适当的类型。ArrayList是异构的,而List只能存储一个类型的对象-该类型作为其泛型参数提供。
List<string> strList; // can store only strings
List<int> intList; // can store only ints
ArrayList someList; // can store anything
当使用64位机器存储原始元素时,ArrayLists的空间利用率会更低,因为它们使用64位宽的内存引用而不是32位引用。此外,还有装箱问题。
请参阅以下链接以获取更多详细信息: 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
一个客户列表(List)只允许包含客户类型和继承自客户的类型,因此您不能犯这样的错误。
即使您需要将不相关类型的对象放入同一集合中,使用一个对象列表(List(Of Object))是更好的选择,因为它明确表示您正在处理不同的类型。
List可以使用泛型,以便只能将特定类型的对象放入其中,这样可以进行额外的类型检查,并且可以减少由于装箱和拆箱而导致的处理时间。Arraylist无法使用泛型。在几乎所有情况下,您都应该使用List而不是Arraylist。
ArrayList
,List
。 - Rory O'Kane