以下のようなクラスStream
、StreamReader
、StreamWriter
などの実装IDisposable
インタフェース。つまりDispose()
、これらのクラスのオブジェクトでメソッドを呼び出すことができます。彼らはpublic
と呼ばれるメソッドも定義しましたClose()
。オブジェクトの処理が完了したら、何を呼び出せばよいのでしょうか。両方とも呼ぶとどうなりますか?
私の現在のコードはこれです:
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
using (StreamWriter writer = new StreamWriter(filename))
{
int chunkSize = 1024;
while (!reader.EndOfStream)
{
char[] buffer = new char[chunkSize];
int count = reader.Read(buffer, 0, chunkSize);
if (count != 0)
{
writer.Write(buffer, 0, count);
}
}
writer.Close();
}
reader.Close();
}
}
ご覧のとおり、各オブジェクトのメソッドusing()
を自動的に呼び出す構造を作成しましたDispose()
。しかし、Close()
メソッドも呼び出します。正しいですか?
ストリームオブジェクトを使用する際のベストプラクティスを教えてください。:-)
MSDNの例ではusing()
構成を使用せず、Close()
メソッドを呼び出します。
いいですか?
using (MemoryStream ms1 = new MemoryStream(), ms2 = new MemoryStream()) { }
。:あなたがタイプ再定義することができる場所私はこのような意味using (MemoryStream ms = new MemoryStream()) using (FileStream fs = File.OpenRead("c:\\file.txt")) { }