的性質我有了如下流類型的屬性,一類:清理問題,當一個類有流類型
public class Csv
{
private StreamReader streadReder;
private StreamWriter streamWriter;
}
是否需要實施IDisposable
?如有需要,請提供鏈接。因爲它似乎有點令人困惑的刺激IDisposable
。
的性質我有了如下流類型的屬性,一類:清理問題,當一個類有流類型
public class Csv
{
private StreamReader streadReder;
private StreamWriter streamWriter;
}
是否需要實施IDisposable
?如有需要,請提供鏈接。因爲它似乎有點令人困惑的刺激IDisposable
。
是的,你應該在這樣的情況下實現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();
}
}
}
如果Csv
型擁有流資源,並負責他們的處置,那麼它應該實現IDipsosable
以及和處置值
public class Csv : IDisposable {
...
public void Dispose() {
streamReader.Dispose();
streamWriter.Dispose();
}
}
這聽起來我在想什麼。謝謝! – Pingpong 2013-03-15 22:41:28
你如何運行分析?我正在使用VS 2012?我運行了Run Code Analysis,但沒有警告。是否還有其他類似的工具,如FoxCop,樣式,你會推薦? – Pingpong 2013-03-15 23:22:46
您可以在項目屬性的代碼分析選項卡上選擇不同的規則集。例如,使用「Microsoft基本設計指南規則」將使此警告出現。 – 2013-03-15 23:32:14
在我們的項目中,我們將StyleCop與ReSharper一起使用,這有助於維持一些合理的代碼質量和樣式一致性。 – 2013-03-15 23:37:44