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

时间:2013-03-15 22:17:21

标签: c# idisposable

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

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

是否需要实施IDisposable?如果需要,请提供链接。因为刺穿IDisposable似乎有点混乱。

2 个答案:

答案 0 :(得分:2)

是的,在这种情况下你应该实现IDisposable。代码分析中甚至还有一个设计警告: CA1001: Types that own disposable fields should be disposable

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

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

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

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

答案 1 :(得分:1)

如果Csv类型拥有流资源并负责处理它们,那么它也应该实现IDipsosable并处理值

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