これは私のコードです:
string data = "...";
var stream = new StreamReader(data);
Close()
メソッドを呼ばなくてもいいですか?
これは私のコードです:
string data = "...";
var stream = new StreamReader(data);
Close()
メソッドを呼ばなくてもいいですか?
はい、そうしないとメモリリークが発生します。using ステートメントでラップStreamReader
して、クリーンアップについて心配する必要がないようにします。
using (var reader = StreamReader(data))
{
...
}
実際にコードをコンパイルして実行しましたか?
StreamReader(string)
コンストラクターは入力をファイル名として扱います!
これが本当にあなたのコードではなく、意図したもの StringReader
でない限り、あなたのコードは で指定されたファイル名のコンテンツをストリーミングしようとしています。これは、ファイルがおそらく存在しないため、data
をスローする可能性があります。その場合、ファイル ハンドルを解放するためにコードを呼び出すか、ステートメントに統合するFileNotFoundException
必要があります。Close
using
プロセスがリソースの使用を停止するまで、リソースは他のプロセスにアクセスできないため、必要がない場合はリソースを閉じる必要があります。
msdn のこのチュートリアルも参照してください:
http://msdn.microsoft.com/en-us/library/aa355056.aspx
using
これは、ステートメントに注意する必要があることを示しています。それ以外は、使用する方法です。
codeProjectに関するもう 1 つの非常に優れた記事です。読む価値があります。