c# - .net ArrayList.Clear 释放内存吗?

标签 c# .net arraylist

我有一个人口众多的数组列表,我想清除它并重新使用它。如果我清除它,它会释放以前使用的内存吗?

我还应该提到,arraylist 是一个类的私有(private)只读字段,在我第一次使用 arraylist 之后,它仍然有很多事件工作要做。所以我等不及类超出范围后的垃圾回收。

Clear 方法是否足够快?或者我应该销毁并创建一个新的数组列表?

问题更新:

如果我有这样声明的字段(感谢 Jon 的建议)

    /// <summary>
    /// Collection of tasks.
    /// </summary>
    private List<Task> tasks = new List<Task>();

然后我填充它....(大量)

现在如果不是清除它和修整,我可以调用:

tasks = new List<Task>(); 

这会被推荐吗?

最佳答案

做哪个能更好地表达您的意图。您真的想要一个新列表吗?如果是这样,请创建一个新的。如果您在概念上想重复使用相同的列表,请调用 Clear .

ArrayList 的文档确实声明 Clear 保留原始容量 - 所以你仍然会有一个大数组,但它会充满空值而不是对前面元素的引用:

Capacity remains unchanged. To reset the capacity of the ArrayList, call TrimToSize or set the Capacity property directly. Trimming an empty ArrayList sets the capacity of the ArrayList to the default capacity.

您使用 ArrayList 的任何原因而不是 List<T>顺便说一句?

关于c# - .net ArrayList.Clear 释放内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2059824/

相关文章:

c# - 限制 Windsor 容器解析基于的对象

c# - 在 .NET 中使用 Thread.Abort() 和处理 ThreadAbortException 是否安全?

.net - 我的应用程序不受管理。我从哪里开始引入托管代码?

java - 将 ArrayList<> 转换为 TableView 的 ObservableList<>

c# - .NET Core Task.Delay() 消耗处理器

javascript - 如何在MVC4的UI中使用jQuery创建DataTable?

.net - 类型 'System.Threading.ThreadAbortException' 的第一次机会异常发生在 mscorlib.dll 中

ios - .NET Streamed PDF 无法在移动浏览器中打开

java - 为什么ArrayList返回错误: ArrayIndexOutOfBoundsException

java - 如何在二维 ArrayList 上添加元素/数据?