要释放对象,我应该将所有属性设置为 null

本文关键字:属性 设置 null 释放 对象 我应该 | 更新日期: 2023-09-27 18:34:44

我目前正在尝试在我的一些对象上实现我的第一个释放,并且想知道遍历每个反射的所有属性并将它们设置为 null 是否是一个坏主意?

要释放对象,我应该将所有属性设置为 null

实现IDisposable并不意味着您必须将所有字段设置为 null 。当无法从根对象访问它们时,GC 将处理这个问题。

并且设置null不会执行任何操作,直到 GC 注意到它没有管理任何引用,该对象仍将在内存中。

IMO 您看不到比这更全面的答案 正确使用IDisposable界面

仅当只剩下一个托管引用时才设置 null 有帮助,虽然您不需要它,但您需要保持封装类型处于活动状态,然后您将引用设置为 null .否则,如果封装类型本身无法访问,则设置null没有任何意义。

是的,这是一个坏主意。

首先,您的某些属性可能是实现 IDisposable 接口的类,因此您必须首先对它们调用 Dispose 方法。

然后,如果其中一个属性是依赖于 COM 组件或使用某些组件的类,则必须正确释放它,否则最终会出现内存泄漏