从列表中删除后,我是否应该将对象更改为 Null
本文关键字:对象 Null 是否 列表 删除 | 更新日期: 2023-09-27 18:34:08
我有一个类,它有一个static List<T>
字段,里面保存我的所有对象;每个对象代表一个正在运行的进程及其属性。
进程完成其作业后,相关对象将从List<T>
中删除,然后更新我的 UI。
从列表中删除该对象后,我是否应将此对象更改为null
以释放资源?
从列表中删除对象后,该对象仍然存在,但是如果没有引用该对象,垃圾回收器将清理它,您不必担心
C# 是垃圾回收的,因此无论哪种方式,内存都将得到处理。
当您从列表中删除该对象时,该对象将超出范围,并且符合GC的条件。
在事件方面:
即使该对象具有其他对象订阅的一些事件,它仍然适用于 GC。
所以,这是一个单向关系
Broadcaster -> Subscribers
如果Broadcaster
超出范围,即使它有订阅者,它也有资格获得 GC。
但Broadcaster
会阻止Subscribers
的GC
查看事件处理程序是否阻止垃圾回收?
简而言之,没有。
一旦引用超出范围,垃圾回收器将删除对它的对象/引用。 这也可以使用 using(如果对象实现 IDisposable
)关键字来处理。 基本上,不要将其设置为 null
,而是让 C# 中的清理机制为您处理工作。