これはくだらない質問のように思えるかもしれませんが、たとえそれが using ブロックにあるとしても、FileStream で Close() を呼び出す必要があると誰かが主張しているのを聞いたので、これを見ていました (そして、Close() が呼び出されているコードがあります)。ブロックの最後にある)。
Close() が Dispose() を呼び出すことを意図していることは知っていますが、これは .Net 1.1 コードであり、私の経験の大部分は 2.0 を使用しているため、さらに詳しく調べると思いました。
私が驚いたことの 1 つは、FileStream の MSDN ドキュメントには、.Net 2.0 の Dispose() と Dispose(bool) があり、.Net 1.1 の Dispose(bool) しかないことです。
これは見落としかもしれないと思ったので、Reflector を使用してアセンブリを調べました。そこにも Dispose(bool) が表示されますが、Dispose() は表示されません。
これは正しいです?もしそうなら、ここでの話は何ですか?FileStream は using ブロックで動作します。これは、私の知る限り、Dispose() のみを宣言する IDisposable を実装する必要があることを意味すると考えました。
コンパイラの魔法が起こっているのでしょうか、それとも Dispose() の非表示の実装がどこかにありませんか (おそらく、 Dispose(true) または Dispose(false) を呼び出しますか?)
最後に (しゃれは意図していません)、ブロックを使用して FileStream をスコープすると、.Net 1.1 のスコープ出口でストリームが閉じられることを確認できますか?
[編集]
明確にするために、これは C# コードです。VB.Net は .Net 2.0 まで using ステートメントを取得できなかったことを理解していますが、私の理解では、C# には 1.1 が含まれていました (そして、ここにある私の 1.1 コードにはそれが含まれており、コンパイルされます)。