对于Microsoft构建的继承IDisposable的类,我是否必须显式调用Dispose?

Mat*_*hew 4 .net c# dispose idisposable

关于继承IDisposable的Microsoft构建类,我是否必须显式调用Dispose以防止内存泄漏?

我理解最好调用Dispose(或者更好地使用using块),但是在编程时,通常我并不总是立即意识到一个类继承自IDisposable.

我也理解微软IDisposable的实现有点过时,这就是为什么他们创建了解释IDisposable正确用法的文章.

长话短说,在哪些情况下可以忘记调用Dispose?

Jar*_*Par 10

主要问题中有几个问题

我是否明确必须调用Dispose以防止内存泄漏?

呼叫Dispose的任何一个实现类型IDisposable是高度recomended并且甚至可以是类型的合同的一个基本部分.Dispose完成对象后几乎没有理由不调用.IDisposable意图设置一个物体.

但是无法调用Dispose会造成内存泄漏吗?有可能.它非常依赖于该对象在Dispose方法中的作用.许多免费记忆,一些从事件中解脱,其他人免费处理等等......它可能不会泄漏内存,但几乎肯定会对你的程序产生负面影响

在哪些情况下可以忘记调用Dispose?

我从没有开始.绝大多数物品都是有IDisposable充分理由实施的.没有打电话Dispose会伤害你的节目.

  • @Matthew:另外,你无法保证终结者会被召唤.该对象可能永远不会被垃圾回收.即使它已经死了,GC也可以选择仅在系统内存耗尽时收集并完成它,而这可能永远不会. (6认同)
  • @Matthew:"一个正确编写的程序不能假定终结器会运行." 来自[Everybody认为垃圾收集错误的方式](http://blogs.msdn.com/b/oldnewthing/archive/2010/08/09/10047586.aspx)作者:Raymond Chen (4认同)