09/03/10 23:30:29
まとめ
IDisposableを実装するクラスに求められる最低限度の機能は、
好きなタイミングで明示的にDispose()を呼び出して、アンマネージリソースを解放するということだけ。
この最低限度の実装しかしていないクラスなら、Dispose()は絶対に呼ばなきゃいけない。
でもこれじゃ、もしDispose()を呼び出すのを忘れた場合に、
アンマネージリソースは解放されずに残ってしまう。
そこで安全弁として、まともなクラス(FCLなど)では、
Finalize経由でもDispose(bool disposing)を呼び出してリソースの解放が行われるようになっている。
そういうクラスでは別に明示的にDispose()を絶対に呼び出さなきゃいけないわけではない。