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),并将 dispose 逻辑放在“disposing”为 true 的代码路径中。

我不知道为什么......从我这边看一切都很好。

4

1 回答 1

1

问题是您的基类定义不正确。

public void Dispose()不应该是基类中的虚拟方法。它应该处理 GC 抑制并调用虚拟protected virtual void Dispose(bool)方法,这是您应该覆盖的方法。

于 2012-05-02T23:51:55.940 回答