apo*_*pse 6 c# .net-core visual-studio-2017
为什么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!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这看起来像是分析器中的一个错误.
从6月23日的问题评论:
@nguerrera谢谢,分析师报告发布版本的有效问题,你是对的.但是,分析仪中仍然存在问题 - 如果封闭方法也被有条件地排除,则不应触发.例如,以下内容仍会在发布和调试版本中触发诊断.
Run Code Online (Sandbox Code Playgroud)#if DEBUG ~InvisibleEditor() { Debug.Assert(Environment.HasShutdownStarted, GetType().Name + " was leaked without Dispose being called."); } #endif