c# - 使用 "clear"方法与新对象

标签 c# .net

在 .NET 框架中,许多 System.Collection 类都有 Clear 方法。与用新对象替换引用相比,使用它有明显的优势吗?

谢谢。

最佳答案

如果您有对同一个对象的其他引用,并且您想让它们都指向同一个对象,您会想使用 Clear

例如,您可能有一个工作队列,用于存储要执行的任务。在一个或多个线程中,您从该队列中取出工作项(当然,您使用锁定来确保您一次最多使用一个线程访问队列)。如果在某个时候你想清空队列,那么你可以使用 Clear,所有线程仍将指向同一个对象。

作为seen here当您使用Clear 时,所有项目都将被删除,并且Count 将为0,但Capacity 将保持不变。通常 Capacity 保持不变是一件好事(为了提高效率),但可能存在一些极端情况,您有大量项目并且您希望最终释放该内存。

上面的 MSDN 链接还提到 Clear 是一个 O(n) 操作。而简单地替换引用将是一个 O(1) 操作,然后最终它将被垃圾收集,但可能不会立即。但是替换引用也意味着构成容量的内存将需要重新分配。

关于c# - 使用 "clear"方法与新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3106537/

相关文章:

.net - System.IO.FileNotFoundException 与 Log4Net 发布时

c# - 如何从函数中获取值?

c# - 我需要在 C# 中的 EWS 的帮助下接收电子邮件

c# - 返回可执行文件名的 Winform 命令行参数

c# - String、Int32 等类的行为和赋值

c# - 在 C# UpdatePanel 更新后更新 JavaScript

c# - 如何在 C# .NET 中反序列化复杂的 JSON 对象?

c# - 如何在 C# 中返回空值而不是空值

C# MVC Mock Model 通过接口(interface)打破了 Controller

.net - 调用 .NET WinForms 事件处理程序的时机