System.Collections.ArrayList有哪些替代方案?

时间:2012-11-26 07:11:12

标签: c# .net data-structures .net-2.0

我被要求修改前一段时间为Windows窗体应用程序编写的代码。程序员大量使用ArrayList。我认为通用列表与数组列表相比更有效,并计划使用List<T>重写代码。我想知道是否还有其他可能值得考虑的替代方案。我在.net 2.0上工作

3 个答案:

答案 0 :(得分:4)

如果您在.NET 2中工作,那么您将无法使用.NET 4中的任何并发集合,这几乎只会留下List<T>的“集合”。有点像ArrayList。(即使在并发集合中,也没有直接的等价物 - 你应该只在实际预期并发访问时才使用并发集合。)

Stack<T>Queue<T>以及LinkedList<T> - 但就你可以用它们做什么而言,所有这些都与ArrayList有所不同。如果你不需要随机访问,它们是值得考虑的。

除非您目前在ArrayList中装入很多大值类型,否则我不会期望效率更多。您可以期望的是更清晰的代码。演员阵容减少,收藏内容的不确定性降低等等。

如果您可以选择在不久的将来随时升级到.NET 3.5,那么您将可以访问LINQ,这在处理集合时非常有用非常有用。相对较少的新集合类型,但更简单的表达操作的方式。

答案 1 :(得分:2)

<强>更新

对于添加到/从头部/尾部移除最好使用LinkedList<T>,但如果您可以确定收集的确切最大容量,并且大小将接近容量,则可能最好使用{{1 (因为在内部它是数组,当大小达到容量时重新分配)。使用Queue,您将不会获得LinkedList节点带来的内存开销。

<强>原始 来自MSDN:Queue<T> 请仔细阅读The List<T> class is the generic equivalent of the ArrayList class. Performance Considerations部分。 你应该使用什么取决于ArrayList的使用方式?是随机访问还是从头/尾添加/删除?

答案 2 :(得分:1)

尝试SortedListCollection。 两者都受.NET Framework 2.0支持