C#现在还有必要使用ArrayList而不是List<T>吗?

6

这个标题已经概括了问题。既然我们有了 List<T>,为什么还要使用 ArrayList 呢?我唯一能想到的原因是如果你被迫使用早于 List<T> 实现之前版本的 .NET?


我想,如果你想要一个包含各种不相关类型的列表。 - John Ledbetter
2
@John:在这种情况下,为了保持一致性,我更喜欢使用List<object> - Will Vousden
2
各种不相关的类型都可以放入List<object>中。 - Yaakov Ellis
可能是c#何时应该使用List,何时应该使用ArrayList?的重复问题。 - John Saunders
5个回答

8

正如你所说,如果由于某种原因你被困在.Net 1.1中,那么你别无选择。

你的问题似乎表明有选择的余地。那么就没有使用ArrayList的理由了。任何ArrayList可以做到的事情,List<T>也能做到,甚至更好。


4

简短回答,不行。ArrayList是在.NET不支持泛型的时代诞生的。List是处理列表更灵活(泛型)的方式。事实上,我认为Silverlight甚至根本不支持ArrayList。


1

ArrayList主要是为了向后兼容而存在。在项目中,如果有截止日期,您可能会有时间将所有内容从ArrayList转换为通用列表。

另一个原因是您可能正在使用一个编写在.NET 1.1中的库。因此,您可能被迫在代码中使用ArrayList,并且很可能将其转换为通用列表以便于编码。

但是,这两者之间存在一些差异,您可能需要阅读以下内容: .NET: ArrayList vs List


0
你自己说了:向后兼容性。虽然它已经没有用处了,但显然不能从BCL中删除它,因为这会破坏现有的代码,而这些代码由于某种原因必须编译成.NET 1.1。

0

自从 .Net 2.0 以来,我唯一使用 ArrayList 的时候是为了与 vb.net 中内置的 My.Settings 功能一起使用,而我后来发现我可能本可以在那里使用泛型列表。


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