どのようにIDisposableをは、.NET 1.1でのFileStreamに実装されています
-
06-09-2019 - |
質問
このはnoddyで質問のように思えるかもしれませんが、私は、誰かがあなたがそれを使用してブロック内にある場合でも、閉じる()のFileStreamに呼び出す必要があることを主張聞いたので、私はこれを見ていた(と彼らはどこクローズ()のコードを持っています)右ブロックの最後に呼び出されている。
私は閉じるが()のDispose()を呼び出すことを意図していることを知っているが、私は、これは純1.1のコードで、私の経験の大部分は上の2.0とされているので、私は深く見えるだろうと思ってます。
私を襲った一つは、FileStreamを用MSDNのドキュメントは、.NET 2.0のためのDispose()と廃棄(ブール値)を持っているが、唯一の.Net 1.1(ブール値)を処分していることだった。
私はそれが見落としかもしれないと思ったので、私は、アセンブリに見てリフレクターを使用 - 、あまりにも、私は廃棄(ブール値)が参照、ないのDispose()
。これは正しいですか?もしそうなら、ここでの話は何ですか? FileStreamを使用してブロック内で動作します - 私はそれが私の知る限り唯一のDisposeを(宣言し、IDisposableインター)を実装しなければならない意味と思った。
。は、いくつかのコンパイラの魔法が起こっているのか、私はどこかのDispose()の隠された実装行方不明です(おそらく、廃棄(真の)コールまたは)(偽処分?)
最後に(しゃれが意図していない)、あなたはブロックを使用してのFileStreamをスコープするネット1.1の範囲の出口でストリームをクローズすることを確認することができますか?
[編集]
ただ、明確に、これはC#のコードです。
私はVB.Netは、.NET 2.0まで使って文を取得していないことを理解し、私の理解では、C#は1.1でそれを持っていたことである(そしてここに私の1.1のコードは、それを持っており、それがコンパイルされます)解決
これはちょっと面白い実装されますが、それはありますです。 FileStreamをするための基本クラス:System.IO.Streamは、(FileStreamをはそれを継承)IDisposableを実装します。
。基本ストリームクラスは、(廃棄を実装して)明示的に、あなたは(} {ん使用しているもの)IDisposeableとしてストリームをキャストする場合にのみ処分()が表示されますので。
Stream.Dispose()はStream.Close()を呼び出します。
タグ(リフレクターを経由して、このすべてを得ました)