【发布时间】:2011-11-03 11:29:41
【问题描述】:
我在不同的线程和不同的论坛中多次看到下面的代码。这个特别是我从How does GC and IDispose work in C#?收到的。
class MyClass : IDisposable
{
...
~MyClass()
{
this.Dispose(false);
}
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{ /* dispose managed stuff also */ }
/* but dispose unmanaged stuff always */
}
}
我的问题是:
是否有必要创建显式析构函数?该类继承自 IDisposable,并且在 GC 清理期间最终会执行 Dispose()。
Dispose(bool disposing)中参数'disposing'有什么意义?为什么有必要区分处置托管对象和非托管对象?
【问题讨论】:
-
IDisposable 上的规范资源是 Joe Duffy 在这里:bluebytesoftware.com/blog/2005/04/08/…。
-
很多很棒的答案和链接。真希望我能选择所有作为最佳答案。谢谢大家的分享!
标签: c#