ここにコードはMSDNです。私はなぜ仕事がちょうどここで通常のDispose()メソッドで行われていないのか分かりません。 Dispose(bool)メソッドを使用する目的は何ですか?誰がここでDispose(false)と呼ぶでしょうか?C#でDispose(IsDisposing)パターンを呼び出すDisposeの目的は?
public void Dispose()
{
Dispose(true);
// Use SupressFinalize in case a subclass
// of this type implements a finalizer.
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
// If you need thread safety, use a lock around these
// operations, as well as in your methods that use the resource.
if (!_disposed)
{
if (disposing) {
if (_resource != null)
_resource.Dispose();
Console.WriteLine("Object disposed.");
}
// Indicate that the instance has been disposed.
_resource = null;
_disposed = true;
}
}
あなたはまだ、このパターンに従ってくださいしかし、サブクラスは適切に(そして一貫して)扱うことができます。 –
ファイナライザが不要な場合でも。 –
@Reed:サブクラスが関わっているときにこれを行う唯一の理由は、ファイナライザを持つことができるからです。そうでなければ常に真実になるパラメータを気にするのはなぜですか? –