C#:何时应使用List,何时应使用ArrayList?

47

正如标题所说,我应该在什么情况下使用ListArrayList

谢谢

8个回答

90

使用 ArrayList 的主要时间是在 .NET 1.1 中。

除此之外,List<T> 是更好的选择(针对你本地的 T)...

对于那些(罕见的)情况,在不知道类型或无法使用泛型的情况下,即使是 List<object>ArrayList 更有用(我个人认为)。


请参考 JohnIdol 的回答,其中用更多的话解释了为什么。 - Lernkurve

14

您应始终使用List<TypeOfChoice>(在.NET 2.0中引入了泛型), 因为它是类型安全的,并且比ArrayList更快(没有不必要的装箱/拆箱)。

唯一我能想到的情况是,如果您需要与旧的 .NET 1.1 版本进行接口或者您需要一个包含不同类型对象数组并将所有内容作为对象加载, 即可使用后者 List<Object>,这通常更好。


5

由于List是一个泛型类,因此我倾向于始终使用List。

ArrayList是.NET 1.x类(仍然可用和有效),但它不是“类型化”的/泛型的,因此您需要将项目从“object”转换回所需的类型;而使用List时,您不必这样做。


4

尽可能使用List。当高性能的List存在时,我看不到使用ArrayList的任何用处。


3

ArrayList是一个较旧的.NET数据结构。如果您使用的是.NET 2.0或更高版本,请始终在数组需要保存相同类型的项时使用List。使用List而不是ArrayList可以提高性能和可用性。


0

泛型是在 .Net 2.0 中引入的。如果您使用的是早期版本的 .Net,则可以使用 Array List,否则我们可以直接使用泛型列表。Array List 已经被弃用,不会提供更好的类型安全性,并且还会创建装箱和拆箱问题。但是泛型列表不会出现这些问题。


0
如其他人已经说过,当您知道类型时(C# 是一种强类型语言),应该几乎总是使用 List 泛型。其他情况下,例如进行多态/继承类或其他类似操作时,则可以使用其他方法。

0
如果您不想使用Linq查询,那么您就不需要使用List。如果您想使用它,那么您必须优先选择List。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接