Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当类具有流类型的属性时,清除问题_C#_Idisposable - Fatal编程技术网

C# 当类具有流类型的属性时,清除问题

C# 当类具有流类型的属性时,清除问题,c#,idisposable,C#,Idisposable,我有一个具有流类型属性的类,如下所示: public class Csv { private StreamReader streadReder; private StreamWriter streamWriter; } 它是否需要实现IDisposable?如果需要,请提供链接。由于刺穿IDisposable似乎有点让人困惑,如果Csv类型拥有流资源并负责它们的处置,那么它也应该实现IDisposable并处置值 public class Csv : IDisposable {

我有一个具有流类型属性的类,如下所示:

public class Csv
{
  private StreamReader streadReder;
  private StreamWriter streamWriter;
}

它是否需要实现
IDisposable
?如果需要,请提供链接。由于刺穿
IDisposable

似乎有点让人困惑,如果
Csv
类型拥有流资源并负责它们的处置,那么它也应该实现
IDisposable
并处置值

public class Csv : IDisposable { 
  ...
  public void Dispose() { 
    streamReader.Dispose();
    streamWriter.Dispose();
  }
}

是的,在这种情况下应该实现IDisposable。代码分析中甚至有一个设计警告:

最简单的实现可能如下所示:

public class Csv : IDisposable
{
    private StreamReader streadReader;
    private StreamWriter streamWriter;

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

        if (streamWriter != null)
        {
            streamWriter.Dispose();
        }
    }
}

听起来像我在想什么。谢谢你如何进行分析?我正在使用VS 2012?我运行了代码分析,但没有任何警告。还有其他类似的工具吗,比如FoxCop,你会推荐它吗?你可以在项目属性的“代码分析”选项卡上选择不同的规则集。例如,使用“Microsoft Basic Design Guidence Rules”会出现此警告。在我们的项目中,我们使用了带有ReSharper的StyleCop,这有助于保持代码质量和样式一致性的合理水平。我是否遗漏了什么。即使我使用“Microsoft所有规则”,也无法得到该警告。