我在我目前的一个项目上运行VS2013的代码分析,并且遇到了"CA1001:拥有一次性领域的类型应该是一次性的".生成警告(假定DisposableClass工具IDisposable)的简单示例是:
class HasDisposableClassField
{
private DisposableClass disposableClass;
}
Run Code Online (Sandbox Code Playgroud)
但是,将字段变量转换为属性不再生成警告,即使情况是该属性将由类实例化:
class HasDisposableClassProperty
{
private DisposableClass disposableClass { get; set; }
public HasDisposableClassProperty()
{
disposableClass = new DisposableClass();
}
}
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,很明显该类应该实现IDisposable模式,并disposableClass适当地处理它的字段.我的问题:第二种情况是否缺乏对代码分析工具的限制的警告?尽管没有警告,该班级是否仍然实施IDisposable并处置该财产?