MSDNのコードサンプルを参照してください:(http://msdn.microsoft.com/en-us/library/b1yfkh5e (v=VS.100).aspx )
// Design pattern for a base class.
public class Base: IDisposable
{
private bool disposed = false;
//Implement IDisposable.
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Free other state (managed objects).
}
// Free your own state (unmanaged objects).
// Set large fields to null.
disposed = true;
}
}
// Use C# destructor syntax for finalization code.
~Base()
{
// Simply call Dispose(false).
Dispose (false);
}
}
Dispose()実装では、GC.SupressFinalize();を呼び出しますが、オブジェクトをファイナライズするためのデストラクタを提供します。
GC.SuppressFinalize()が呼び出されたときに、デストラクタに実装を提供する意味は何ですか?
意図が何であるか少し混乱していますか?