0

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

4

2 回答 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 回答