Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ArrayList vs List<;对象>;_C#_.net_List_Arraylist - Fatal编程技术网

C# ArrayList vs List<;对象>;

C# ArrayList vs List<;对象>;,c#,.net,list,arraylist,C#,.net,List,Arraylist,我从Jon的回复中看到: 如果您想创建单个集合 包含多个不相关类型的 但是,您必须使用 列表 我不是比较ArrayList与List,而是比较ArrayList与List,因为两者都将公开对象类型的元素。在这种情况下,使用任何一种都有什么好处 编辑:这里不考虑类型安全,因为这两个类都将对象作为其项公开。仍然需要从对象转换为所需类型。我对类型安全以外的任何东西都更感兴趣 编辑:谢谢马克·格雷威尔和肖恩的回答。对不起,我只能选择1作为答案,所以我将同时投票。列表是ArrayList的类型安全版本。它

我从Jon的回复中看到:

如果您想创建单个集合 包含多个不相关类型的 但是,您必须使用
列表

我不是比较
ArrayList
List
,而是比较
ArrayList
List
,因为两者都将公开
对象类型的元素。在这种情况下,使用任何一种都有什么好处

编辑:这里不考虑类型安全,因为这两个类都将
对象
作为其项公开。仍然需要从
对象
转换为所需类型。我对类型安全以外的任何东西都更感兴趣


编辑:谢谢马克·格雷威尔和肖恩的回答。对不起,我只能选择1作为答案,所以我将同时投票。

列表是ArrayList的类型安全版本。它将保证在集合中获得相同的对象类型。

是的,除了类型安全之外,泛型集合实际上可能更快

来自MSDN()

系统.Collections.Generic 命名空间包含接口和 定义泛型的类 集合,它允许用户 创建强类型集合 提供更好的类型安全性和 性能比非泛型强 类型化集合


使用
List
的一大好处是,现在大多数代码都是使用泛型类/接口编写的。我怀疑现在大多数人都会编写一个方法,它采用
IList
而不是
IList
。由于
ArrayList
没有实现
IList
,因此在这些场景中您将无法使用数组列表


我倾向于将非泛型类/接口视为遗留代码,并尽可能避免使用它们。

在这种情况下,
ArrayList
List
相比,您不会注意到速度上的任何差异。每种方法的实际可用方法可能存在一些差异,特别是在.NET 3.5和计数扩展方法中,但这更多地与ArrayList被弃用有关。

您可以将LINQ扩展方法直接用于
列表,但不能用于
ArrayList
,除非插入类型为
Cast()
/
(感谢
IEnumerable
vs
IEnumerable
)。这是值得的,即使你不需要类型安全等


速度大致相同;结构仍然会被装箱,等等-所以没有太多其他的东西来区分它们。除了我倾向于将
ArrayList
视为“哎呀,有人又在写遗留代码了……”-p

做一些基准测试,你就会知道什么表现最好。我估计差别很小

很明显,我这里指的不是类型安全,实际上我不确定问题是关于性能的,但这是一个很好的观点。我猜arraylist性能会因为额外的装箱、拆箱而变得更差。@Anonymous:什么额外的装箱
ArrayList
List
应该具有相同数量的装箱/取消装箱。“单个集合包含多个不相关的值类型”-我的理解是,当向列表集合对象添加不同类型时,会发生装箱/取消装箱,而ArrayList则不会。我想我错了。
List
与使用
ArrayList
相比,在改进类型安全性和性能方面没有给您带来太多帮助。大多数这些改进都是针对
List
的,其中t是除
对象
之外的任何东西。