fenri's diary

基本的には勉強し始めたC#のメモ。後は140字で収まらない駄文。

IDisposable の必要性について

基本的には実利的な意味は薄いっぽい。
以下の3とか5のような暗黙的なルールに明示させる為のもの?


ガベージコレクション(GC)

  • 1 デストラクタは、インスタンスが破棄されるときに実行されますがいつGCにより破棄されるタイミングが制御されるため、破棄されるタイミングがわからず、また必ず実行されるとも限りません。(破棄する前にプログラムが終了したなど)
  • 2 リソースの解放は、try~finallyのfinallyブロックで行う。
  • 3 IDisposable実装クラスは、オブジェクトの使用後にDispose()メソッドを呼び出す。
  • 4 自作クラスでメモリー以外のリソースを使用する場合は、IDisposableインターフェースを実装する。
  • 5 基底クラスがIDisposableを実装している場合は、必ず base.Dispose() を実行する。
  • 6 Disposeメソッドでは、例外をスローしない。
  • 7 usingステートメントを使用してDisposeメソッドの呼び出しを自動化する。