可以配置方法清除管理代码对象吗?

时间:2013-07-12 16:47:51

标签: c# garbage-collection

由于垃圾收集无法清除非托管代码。要清除非托管代码我们使用dispose方法,反过来可以吗?我们可以使用dispose方法清除管理代码对象吗?

2 个答案:

答案 0 :(得分:4)

Dispose方法实现可能将某些字段设置为null,即使包含对象本身不符合条件,也可能使“子”对象符合垃圾回收条件垃圾收集。

它不能强行删除对象 - 它最接近的可能就是调用GC.Collect

Dispose当然不会 来清除字段 - 例如,使用MemoryStream,您可以访问流中的数据(通过{{3或者ToArray)甚至在处理之后。

通常情况下,让垃圾收集器继续使用它擅长的东西会更好(IMO)。

答案 1 :(得分:0)

如果你真的需要强制执行此操作 - 你可以在你的课程上实现IDisposable,然后在using(){}块中使用它,一旦它超出范围,它将在下一个GC.Collect周期清理,可以通过调用方法强制执行。