文章; MemoryStream.Close()またはMemoryStream.Dispose()
Close()
そして Dispose()
上で呼び出されたときに、 MemoryStream
2つのだけのことを行うのに役立ちます。
- オブジェクトの将来の偶然の使用量は例外がスローされますように配置されたオブジェクトをマークします。
- おそらく1 GCの実装に応じて、少し簡単GCの仕事をすることができ、管理対象オブジェクトへのリリース参照。(これは学術的議論のポイントであり、有意な実世界での影響力を持っていないので、今日のGCアルゴリズム上では、本当の違いはありません。)
MemoryStream
あなたが技術的にそれを処分する必要はありませんので、処分するために、任意のアンマネージリソースを持っていません。処分ではないの効果は MemoryStream
およそへの参照をドロップすると同じことである byte[]
GCが同じように両方をクリーンアップします- 。
私はどちらを呼ぶのですか?それは、両方を呼び出すために必要ですか?
Dispose()
ストリームの方法は、 直接委任 Close()
方法2、その両方がまったく同じことを行います。
私はすでにそれらのいずれかを呼び出した場合は、他には例外がスローされますか?
ドキュメント IDisposable.Dispose()
、具体的には、呼び出すために安全であると述べ Dispose()
任意のオブジェクトの上に、複数回3。(つまり、特定のクラスのために真でない場合、そのクラスが実装 IDisposable
の契約に違反し、これはバグだろうな方法でインターフェース。)
すべてのことは言って:あなたは処分するかどうか、それは本当に大きな違いはありません MemoryStream
か。それが持っている唯一の本当の理由 Close
/ Dispose
それから継承するための方法がある Stream
のサポートストリームへの契約の一環として、これらのメソッドを必要とする、 ん (そのようなファイルやソケット記述子など)アンマネージリソースを持っています。