我在不同的帖子和论坛中多次看到了以下代码。这个特别的是我从如何在C#中使用GC和IDispose?中学到的。
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'的意义是什么?为什么需要区分托管对象和非托管对象的处理?