【C# .NET Framework】リソース関連のお話とIDisposableインターフェース
はい。会社寒い。
とりあえず.NET Framework様が扱うリソースの話からー
あ、ちなみに私.NET Framework信者です。はい。
アンマネージリソース
→CLRさんはスルーする
とゆーことでマネージリソースさんはガベージコレクションの対象ですぉ。
要はアンマネージリソースを使うときは、ちゃんとプログラマが解放してあげないとメモリリークしちゃうぉ。ってことです。
で、IDisposableインターフェースが出てくるわけですが、端的に言ってしまえばアンマネージリソースを保持するようなクラスはIDisposableインターフェース様を実装しよーよって話。
実際よくあるだめ例↓
・マネージリソースしか使ってないのにIDisposableを実装しちゃう
・Disposeが呼び出されないことを考慮しない
・Disposeが複数回呼び出されることを考慮しいない
・IDisposableを実装したクラスをメソッド内で使うのにusing使わないでtry~catch~finallyとかであてずっぽうの処理書いちゃう
で、一番言いたい事。
IDisposableインターフェースを実装するクラスを使うときはusingつかいましょ。
もちろんインスタンス変数として保持する場合はIDisposableインターフェースを実装しましょ。