【发布时间】:2016-07-13 18:11:21
【问题描述】:
我正在实现IDisposable,并且在我的Dispose() 方法中,当在其他托管资源上调用Dispose() 时,我正在使用?. 运算符,如下所示:
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if(disposing)
{
_ChangeLock?.Dispose();
}
}
我仍然收到以下code analysis error:
CA2213:“MyClass”包含 IDisposable 类型的字段“MyClass._ChangeLock”:“ReaderWriterLockSlim”。将“MyClass”上的 Dispose 方法更改为在该字段上调用 Dispose 或 Close。
如果我更改为标准的空检查,代码分析警告就会消失:
if(_ChangeLock != null)
_ChangeLock.Dispose();
像我这样使用空条件运算符有什么问题吗,或者这个代码分析规则已经过时了,还是什么?
【问题讨论】:
-
需要更新的是CA规则。
标签: c# code-analysis idisposable