3

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

4

3 回答 3

4

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

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

除非您当前在ArrayList. 你可以期待的是更清晰的代码。更少的演员表,更少的关于收藏内容的不确定性等。

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

于 2012-11-26T07:13:21.813 回答
2

更新:

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

原文: 来自 MSDN:The List<T> class is the generic equivalent of the ArrayList class. 请仔细阅读List<T> 性能注意事项部分。你应该使用什么取决于如何使用 ArrayList?是随机访问还是从头/尾添加/删除?

于 2012-11-26T08:08:31.273 回答
1

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

于 2012-11-26T07:17:10.820 回答