以下代码为Main的第一行生成CA2000(" 丢失范围之前的Dispose对象 ")违规,但不生成第二行.我真的很喜欢第二行的CA2000违规,因为这是我工作的大型代码库中常见的(显然简化的)模式.
有谁知道为什么第二行没有产生违规?
public static void Main()
{
new Disposable();
MakeDisposable();
}
private static Disposable MakeDisposable() { return new Disposable(); }
private sealed class Disposable : IDisposable
{
public void Dispose()
{
}
}
Run Code Online (Sandbox Code Playgroud)