【C# .NET Framework】リソース関連のお話とIDisposableインターフェース

はい。会社寒い。

とりあえず.NET Framework様が扱うリソースの話からー
あ、ちなみに私.NET Framework信者です。はい。


マネージリソース

CLRさんががんばってくれる


アンマネージリソース

CLRさんはスルーする

とゆーことでマネージリソースさんはガベージコレクションの対象ですぉ。
要はアンマネージリソースを使うときは、ちゃんとプログラマが解放してあげないとメモリリークしちゃうぉ。ってことです。

で、IDisposableインターフェースが出てくるわけですが、端的に言ってしまえばアンマネージリソースを保持するようなクラスはIDisposableインターフェース様を実装しよーよって話。

実際よくあるだめ例↓
・マネージリソースしか使ってないのにIDisposableを実装しちゃう
・Disposeが呼び出されないことを考慮しない
・Disposeが複数回呼び出されることを考慮しいない
・IDisposableを実装したクラスをメソッド内で使うのにusing使わないでtry~catch~finallyとかであてずっぽうの処理書いちゃう



で、一番言いたい事。

IDisposableインターフェースを実装するクラスを使うときはusingつかいましょ。
もちろんインスタンス変数として保持する場合はIDisposableインターフェースを実装しましょ。