要释放对象,我应该将所有属性设置为 null
本文关键字:属性 设置 null 释放 对象 我应该 | 更新日期: 2023-09-27 18:34:44
我目前正在尝试在我的一些对象上实现我的第一个释放,并且想知道遍历每个反射的所有属性并将它们设置为 null 是否是一个坏主意?
实现IDisposable
并不意味着您必须将所有字段设置为 null
。当无法从根对象访问它们时,GC 将处理这个问题。
并且设置null
不会执行任何操作,直到 GC 注意到它没有管理任何引用,该对象仍将在内存中。
IMO 您看不到比这更全面的答案 正确使用IDisposable界面
仅当只剩下一个托管引用时才设置 null 有帮助,虽然您不需要它,但您需要保持封装类型处于活动状态,然后您将引用设置为 null
.否则,如果封装类型本身无法访问,则设置null
没有任何意义。
是的,这是一个坏主意。
首先,您的某些属性可能是实现 IDisposable
接口的类,因此您必须首先对它们调用 Dispose
方法。
然后,如果其中一个属性是依赖于 COM 组件或使用某些组件的类,则必须正确释放它,否则最终会出现内存泄漏