由于某种原因FXCop seems to think我应该在Dispose中调用GC.SuppressFinalize,无论我是否具有终结器。

我想念什么吗?是否有理由在未定义终结器的对象上调用GC.SuppressFinalize?

最佳答案

IL中始终有一个终结器-每个类中都存在System.Object.Finalize(),因此,如果您创建一个自定义类,则它具有要取消的终结器。话虽这么说,并不是所有对象都放在终结队列中,所以如果您实现自己的终结器,则从技术上讲,您应该只需要抑制终结。

如果要实现IDisposable来包装非托管资源,则应包括一个终结器,并应防止其运行,因为从理论上讲,在调用Dispose时已在进行清理。

关于c# - 是否应在没有终结器的对象上调用GC.SuppressFinalize?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/621152/

10-11 23:20