为什么在使用带有Dispose()的空条件运算符时,代码分析会标记我?

时间:2015-12-04 17:47:58

标签: c# idisposable

我有一个实现IDisposable的类。我改变了我的Dispose()方法:

public void Dispose()
{
    if (AccountCreateResetEvent != null)
    {
        AccountCreateResetEvent.Dispose();
        AccountCreateResetEvent = null;
    }
}

到此:

public void Dispose()
{
    AccountCreateResetEvent?.Dispose();
    AccountCreateResetEvent = null;
}

现在运行代码分析时出现以下错误:

  

'适配器'包含字段' Adapter.AccountCreateResetEvent'属于IDisposable类型:' AutoResetEvent'。更改'适配器'上的Dispose方法在此字段上调用Dispose或Close。

这是代码分析的怪癖还是我在这里做错了什么?

编辑:重现问题的简单全类声明

using System;
using System.Threading;

namespace IDisposableProblem1
{
    public sealed class Account : IDisposable
    {
        private AutoResetEvent AccountResetEvent = new AutoResetEvent(false);

        public void Dispose()
        {
            AccountResetEvent?.Dispose();
            AccountResetEvent = null;
        }
    }
}

0 个答案:

没有答案