为什么VS抱怨这个终结者?
VS 2017 - 15.3.5
Microsoft Code Analysis 2017 - 2.3.0.62003
using System;
namespace ConsoleApp
{
class DisposableClass : IDisposable
{
#if DEBUG
~DisposableClass () // CA1821 Remove empty Finalizers
{
System.Diagnostics.Debug.Fail ("Forgot Dispose?");
}
#endif
public void Dispose ()
{
#if DEBUG
GC.SuppressFinalize (this);
#endif
}
}
class Program
{
static void Main (string[] args)
{
Console.WriteLine ("Hello World!");
}
}
}
答案 0 :(得分:7)
这看起来是a bug in the Analyzer。
从6月23日的问题发表评论:
@ guerrera谢谢,分析师报告发布版本的有效问题,你说得对。但是,分析仪中仍然存在问题 - 如果封闭方法也有条件地排除,则不应触发。例如,以下内容仍会在发布和调试版本中触发诊断。
#if DEBUG ~InvisibleEditor() { Debug.Assert(Environment.HasShutdownStarted, GetType().Name + " was leaked without Dispose being called."); } #endif