以下のように、ストリーム型のプロパティを持つクラスがあります。
public class Csv
{
private StreamReader streadReder;
private StreamWriter streamWriter;
}
の実装が必要IDisposable
ですか? 必要に応じて、リンクを提供してください。突き刺すのはちょっとややこしいのでIDisposable
。
以下のように、ストリーム型のプロパティを持つクラスがあります。
public class Csv
{
private StreamReader streadReder;
private StreamWriter streamWriter;
}
の実装が必要IDisposable
ですか? 必要に応じて、リンクを提供してください。突き刺すのはちょっとややこしいのでIDisposable
。
はい、そのような場合は IDisposable を実装する必要があります。これに対するコード分析には、設計上の警告もあります: CA1001: 使い捨て可能なフィールドを所有する型は使い捨てにする必要があります。
最も単純な実装は次のようになります。
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();
}
}