本地使用的 IDisposable 是否有 FxCop 规则?

2024-01-06

...如果我在局部变量中使用 IDisposable,但不调用 Dispose() 或使用 using() 模式。

public void BadMethod()
{
    var fs = new FileStream("file.txt", FileMode.Create);
    fs.WriteByte(0x55);
    // no dispose, no using()
}

就像“拥有一次性字段的类型应该是一次性的” http://msdn.microsoft.com/en-us/library/ms182172.aspx字段的规则。


EDIT:用FileStream替换了MemoryStream,因为MemoryStream只是分配内存并且不使用(非托管)资源,所以有人could讨论强制 Dispose() 调用。


FxCop 有这方面的规则吗?是和不是。

在 Visual Studio 2005 代码分析所基于的 FxCop 1.35 中,有一条规则在失去作用域之前处理对象 http://msdn.microsoft.com/en-us/library/ms182289(VS.80).aspx正是这样做的。

在FxCop 1.36(Visual Studio 2008代码分析)中,他们删除了数据流分析引擎,这意味着这条规则也必须删除。

然而,在接下来的 FxCop 中(视觉工作室2010代码分析),看来在失去作用域之前处理对象 http://msdn.microsoft.com/en-us/library/ms182289(VS.100).aspx已经回来了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

本地使用的 IDisposable 是否有 FxCop 规则? 的相关文章

随机推荐