【问题标题】:Visual Studio Code Analysis Dispose implementation warningsVisual Studio 代码分析 Dispose 实现警告
【发布时间】:2012-05-02 23:46:53
【问题描述】:

我有以下代码:

/// <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”为真的代码路径中。

我不知道为什么...从我这边看起来一切正常。

【问题讨论】:

    标签: visual-studio code-analysis


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2014-01-06
    • 2016-04-07
    相关资源
    最近更新 更多