Visual studio Visual Studio代码分析处理实现警告
我有以下代码:Visual studio Visual Studio代码分析处理实现警告,visual-studio,code-analysis,Visual Studio,Code Analysis,我有以下代码: /// <summary> /// Dispose. /// </summary> public override sealed void Dispose() { Dispose(true); GC.SuppressFinalize(this); } /// <summary> /// Dispose. /// </summary> /// <param name="disposing"> /// Di
/// <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);
}
//
///处置。
///
public override sealed void Dispose()
{
处置(真实);
总干事(本);
}
///
///处置。
///
///
///配置参数。
///
受保护的覆盖无效处置(布尔处置)
{
如果(处置)
{
}
清除();
基地。处置(处置);
}
并发出以下警告:
警告435 CA2215:Microsoft。用法:确保方法“DSDump.Dispose()”在所有可能的控制流路径中调用base.DSDump.Dispose()。警告436 CA1063:Microsoft.Design:删除“DSDump.Dispose()”,重写Dispose(bool disposing),并将Dispose逻辑置于“disposing”为true的代码路径中
我不知道为什么。。。从我的角度来看,一切正常。问题在于基类的定义不正确
public void Dispose()
不应是基类中的虚拟方法。它应该处理GC抑制并调用virtualprotected virtual void Dispose(bool)
方法,这是您应该覆盖的方法。+1,Microsoft确实有示例代码来显示推荐的方法,@LexLi注意,MS指南和示例代码仅显示如何实现基类,而不是派生类。为此,请参见: