从列表中删除后,我是否应该将对象更改为 Null

本文关键字:对象 Null 是否 列表 删除 | 更新日期: 2023-09-27 18:34:08

我有一个类,它有一个static List<T>字段,里面保存我的所有对象;每个对象代表一个正在运行的进程及其属性。

进程完成其作业后,相关对象将从List<T>中删除,然后更新我的 UI。

从列表中删除该对象后,我是否应将此对象更改为null以释放资源?

从列表中删除后,我是否应该将对象更改为 Null

从列表中删除对象后,该对象仍然存在,但是如果没有引用该对象,垃圾回收器将清理它,您不必担心

C# 是垃圾回收的,因此无论哪种方式,内存都将得到处理。

当您从列表中删除该对象时,该对象将超出范围,并且符合GC的条件。


事件方面:

即使该对象具有其他对象订阅的一些事件,它仍然适用于 GC。

所以,这是一个单向关系

Broadcaster -> Subscribers

如果Broadcaster超出范围,即使它有订阅者,它也有资格获得 GC。

Broadcaster会阻止Subscribers的GC

查看事件处理程序是否阻止垃圾回收?

简而言之,没有。

一旦引用超出范围,垃圾回收器将删除对它的对象/引用。 这也可以使用 using(如果对象实现 IDisposable )关键字来处理。 基本上,不要将其设置为 null,而是让 C# 中的清理机制为您处理工作。