2

次のコードがあります。

/// <summary>
/// Dispose.
/// </summary>
public override sealed void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);
}

/// <summary>
/// Dispose.
/// </summary>
/// <param name="disposing">
/// Disposing parameter.
/// </param>
protected override void Dispose(bool disposing)
{
    if (disposing)
    {
    }
     Clear();
     base.Dispose(disposing);
}

また、次の警告があります。

警告 435 CA2215 : Microsoft.Usage : メソッド 'DSDump.Dispose()' がすべての可能な制御フロー パスで base.'DSDump.Dispose()' を呼び出すことを確認してください。
警告 436 CA1063 : Microsoft.Design : 'DSDump.Dispose()' を削除し、Dispose(bool disposing) をオーバーライドして、'disposing' が true であるコード パスに dispose ロジックを配置します。

理由はわかりません...私の側からはすべて問題ないように見えます。

4

1 に答える 1

1

問題は、基本クラスが正しく定義されていないことです。

public void Dispose()基本クラスの仮想メソッドであってはなりません。GC 抑制を処理し、オーバーライドする必要がある仮想protected virtual void Dispose(bool)メソッドを呼び出す必要があります。

于 2012-05-02T23:51:55.940 に答える