私たちが使用してブロック内のC#BinaryWriterまたはBinaryReaderをクローズする必要がありますか?
-
21-08-2019 - |
質問
このコードを有するます:
using (BinaryWriter writer = new BinaryWriter(File.Open(ProjectPath, FileMode.Create)))
{
//save something here
}
私たちは、BinaryWriterをクローズする必要がありますか?ない場合、その理由は?
解決
長いので、それがすべてusing
ブロックに包まれていますと、あなたは明示的Close
を呼び出す必要はありません。
using
ブロックは、オブジェクトが配置されていることを確認し、Close
とDispose
方法はBinaryWriter
に交換可能です。 (Close
方法は、ちょうど舞台裏Dispose
を呼び出します。)
他のヒント
がないので、基になるストリームを閉じ処分を呼び出しますあなたのコードの例に従ってusingステートメントにそれを置きます。あなたはリフレクターを介してこれを見ることができます:
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
this.OutStream.Close();
}
}
あなたはそれを使用してブロックを終了したら、あなたは近いexplcitly呼び出す必要はありませんので、それは、ファイルを閉じます。そこに持っているコード付き
あなたは、あなたのBinaryWriterで行われている場合には、あなたがコンストラクタに渡すのではなく、それの参照を保持する必要があり後にファイルがまだ開いようにしたい場合は、唯一の理由は次のようになりusingステートメントを使用しませんそんなます。
を使用してブロックはautomaticllyにバイナリライターを閉じてGC'edされる状態に入れます。ブロックを使用すると、ストリームを自分の例外処理と閉鎖を行うための糖衣構文です。
作家が配置されたときに
は、使用してブロック内のアップライターを包むことで、近くには自動的に行われます。したがって、この場合には、明示的にライターをクローズする必要はありません。
所属していません StackOverflow