我目前正在尝试在我的一些对象上实现我的第一次处置,并且想知道遍历每个反射的所有属性并将它们设置为 null 是否是一个坏主意?
问问题
1497 次
2 回答
1
实施IDisposable
并不意味着您必须将所有字段设置为null
. 当无法从根对象访问它们时,GC 会处理这些问题。
并且设置null
不会做任何事情,直到 GC 注意到它没有管理任何引用,对象仍将在内存中。
IMO 你看不到比这个更全面的答案正确使用 IDisposable 接口
设置 null 仅在只剩下一个托管引用时才有帮助,尽管您不需要它,但您需要保持封装类型处于活动状态,然后您将设置对null
. 否则,如果封装类型本身不可访问,则设置null
没有任何意义。
于 2013-10-09T10:34:13.053 回答
0
是的,这是个坏主意。
首先,您的某些属性可能是实现IDisposable
接口的类,因此您必须Dispose
首先在它们上调用方法。
然后,如果您的某个属性是依赖于 COM 组件或使用某些组件的类,则必须正确处理它,否则最终会导致内存泄漏
于 2013-10-09T10:25:21.150 回答