2016年8月24日水曜日

[C#]Disposeの使い方

IDisposableインターフェイスの正しい使い方について取り上げたいと思います。

IDisposableインターフェイスはクラスに解放処理にあたるDispose処理を追加する事が目的である。
ライブラリを使っていると、Disposeがあるとusingで使えるから便利で使う人もいると思いますが、そこからもう少し深い理由を知ると使い方の意識が変わります。

このDisposeというのは、ネイティブなリソースにアクセスして解放漏れ(メモリーリーク)を防ぐ機構です。

.net frameworkではハードウェアリソースにアクセスするもの全てにライブラリが存在していて、ユーザーは用意されたものを利用するだけで良いようになっています。

意識しなければ利用するライブラリにDisposeがある/なしでしか判断つきませんが、

 リソース開放を意識的に行わなければいけないものがそこには存在している

という視点で見ると使い方がガラッと変わってきます。

クラス実装しているときに利用するライブラリにDisposeがあれば、それを利用したライブラリにもDisposeが必要という連鎖が生まれてきます。
もしDisposeの連鎖が無かったら、Disposeリソース開放が行われなくなるのでメモリーリークが発生します。

なんとなく使っているDisposeですが、Disposeがあるから呼び出している/使っている程度ではなく
しっかりとDisposeの意味を知る事で、使い方の適材適所を身に付けるとより強固な実装が行えるようになると思います。
コメントを投稿

Androider