代码之家  ›  专栏  ›  技术社区  ›  ulrichb

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

  •  6
  • ulrichb  · 技术社区  · 16 年前

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

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

    就像 "Types that own disposable fields should be disposable" 字段的规则。


    编辑: 将MemoryStream替换为FileStream,因为MemoryStream只分配内存,不使用(非托管)资源,所以 能够 讨论强制Dispose()调用。

    1 回复  |  直到 16 年前
        1
  •  15
  •   bobbymcr    16 年前

    这有FxCop规则吗?是和否。

    在VisualStudio2005代码分析所基于的FxCop 1.35中,有一条规则 DisposeObjectsBeforeLosingScope 正是它做到了这一点。

    在fxcop1.36(visualstudio2008代码分析)中,他们删除了数据流分析引擎,这意味着这个规则也必须删除。

    然而,在下一个FxCop中( 代码分析),似乎 DisposeObjectsBeforeLosingScope 他回来了!