StreamクラスはIDisposableインターフェイスを実装しているので、Streamをusingステートメント内で使うことが出来ます。 この場合、Closeメソッドを呼び出さなくてもusingステートメントから抜ける時点でそれに相当する処理が自動的に行われます。 そのため、上記のコードと次のコードは、同等のものとなります。
usingステートメントを使ってStreamを閉じる
Imports System
Imports System.IO
Class Sample
Shared Sub Main()
' Streamを開き、usingステートメント内で使用する
Using stream As Stream = File.OpenWrite("sample.dat")
Dim buffer() As Byte = New Byte(7) {&h41, &h42, &h43, &h44, &h45, &h46, &h47, &h48}
' streamにデータを書き込む
stream.Write(buffer, 0, 8)
End Using
' Usingステートメントを抜ける時点でCloseメソッドに相当する処理が行われ、streamは閉じられる
End Sub
End Class
usingステートメントとIDisposableについてはオブジェクトの破棄 §.usingステートメントで詳しく解説しています。
Closeメソッドでストリームを閉じた後は、ほとんどのメソッドの呼び出しとプロパティの参照ができなくなります。 閉じたStreamに対してこれらの操作を行おうとすると例外ObjectDisposedExceptionがスローされます。