質問

このは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()を呼び出します。

タグ(リフレクターを経由して、このすべてを得ました)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top