0

これは私のコードです:

string data = "...";
var stream = new StreamReader(data);

Close()メソッドを呼ばなくてもいいですか?

4

4 に答える 4

5

はい、そうしないとメモリリークが発生します。using ステートメントでラップStreamReaderして、クリーンアップについて心配する必要がないようにします。

using (var reader = StreamReader(data))
{
    ...
}
于 2012-10-14T09:12:37.037 に答える
1

実際にコードをコンパイルして実行しましたか?

StreamReader(string)コンストラクターは入力をファイル名として扱います!

これが本当にあなたのコードではなく、意図したもの StringReaderでない限り、あなたのコードは で指定されたファイル名のコンテンツをストリーミングしようとしています。これは、ファイルがおそらく存在しないため、dataをスローする可能性があります。その場合、ファイル ハンドルを解放するためにコードを呼び出すか、ステートメントに統合するFileNotFoundException必要があります。Closeusing

于 2012-10-14T10:07:48.173 に答える
0

プロセスがリソースの使用を停止するまで、リソースは他のプロセスにアクセスできないため、必要がない場合はリソースを閉じる必要があります。

于 2012-10-14T10:04:07.843 に答える
0

msdn のこのチュートリアルも参照してください:
http://msdn.microsoft.com/en-us/library/aa355056.aspx

usingこれは、ステートメントに注意する必要があることを示しています。それ以外は、使用する方法です。

codeProjectに関するもう 1 つの非常に優れた記事です。読む価値があります。

于 2012-10-14T09:19:40.490 に答える