通过反射清理处理物体

时间:2013-10-09 10:22:47

标签: c# dispose

我目前正试图在我的一些对象上实现我的第一次处理,并且想知道每次反射都要通过所有属性并将它们设置为null是一个坏主意吗?

2 个答案:

答案 0 :(得分:1)

实施IDisposable并不意味着您必须将所有字段都设置为null。当从根对象无法访问它时,GC将负责处理。

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

IMO您无法看到比Proper use of the IDisposable interface

更全面的答案

设置null仅在只剩下一个托管引用的情况下有帮助,但您不需要它但需要保持封装类型为活动,然后您将设置对null的引用。否则,如果无法访问封装类型本身,则设置null没有任何意义。

答案 1 :(得分:0)

是的,这是一个坏主意。

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

然后,如果您的某个属性是依赖于COM组件或使用某些组件的类,则必须正确处理它,否则最终会导致内存泄漏

相关问题