我被要求修改前段时间为 Windows 窗体应用程序编写的代码。程序员用ArrayList
得很厉害。我认为通用列表与数组列表相比效率更高,并计划使用List<T>
我想知道是否还有其他可能值得考虑的替代方案来重写代码。我在.net 2.0 上工作
3 回答
如果您在 .NET 2 中工作,那么您将无法使用 .NET 4 中的任何并发集合,这几乎只是留下List<T>
“有点像ArrayList
. 的集合”(即使在并发集合,没有直接的等价物 - 并且您应该只在您实际预期并发访问时才使用并发集合。)
有Stack<T>
和Queue<T>
,以及- 但就你可以用它们做什么而言,LinkedList<T>
所有这些都有些不同。ArrayList
当然,如果您不需要随机访问,它们值得考虑。
除非您当前在ArrayList
. 你可以期待的是更清晰的代码。更少的演员表,更少的关于收藏内容的不确定性等。
如果您可以选择在不久的将来随时升级到 .NET 3.5,那么您就可以访问 LINQ,这在处理集合时非常有用。相对较少的新集合类型,但表达对它们的操作的方式要简单得多。
更新:
对于从头/尾添加/删除,最好使用LinkedList<T>
,但是如果您可以确定集合的确切最大容量并且大小将接近容量,那么使用它可能会更好Queue<T>
(因为在内部它是数组,当大小达到容量时重新分配)。使用 Queue,您将不会获得 LinkedList 节点带来的内存开销。
原文:
来自 MSDN:The List<T> class is the generic equivalent of the ArrayList class.
请仔细阅读List<T>
性能注意事项部分。你应该使用什么取决于如何使用 ArrayList?是随机访问还是从头/尾添加/删除?
尝试SortedList和Collection。两者都受 .NET Framework 2.0 支持