投稿者 よねKEN  () 投稿日時 2008/7/15 19:40:00
>>5 
 
長いのでコメントを2つに分けました。 
 
> また、派生クラスで親クラスに Dispose メソッドが存在する場合は子クラスの Dispose メソッドで MyBase.Dispose を実行する。  
 
派生クラスのDisposeメソッドで+αの処理を行うのでなければ、親クラスのDisposeメソッドをオーバーライドする必要はありません。無用なオーバーライドは避けましょう。 
 
> 使用したクラスに Dispose が実行されている場合は必ず実行しておくように心掛けておいたほうがよいのでしょうか? 
 
IDisposable.Disposeメソッドが実装されているものに対しては、可能な限りDisposeメソッドを呼ぶべきです。 
ただし、常に呼び出せるとは限りません。 
 
・自分自身でそのクラス/構造体のインスタンスを作成していること 
・他のクラス等でそのインスタンスを使用していないことが明らかなこと 
 
といったいくつかの条件が揃っている必要があります。 
他で使われているインスタンスのDisposeメソッドを呼び出すとまずいですので。 
例えば、メソッドのローカル変数にインスタンスを生成し、そのメソッドの中でだけそのインスタンスを利用しているなら、通常は、Disposeメソッドを呼んで問題ありません。 
 
ちなみにVB2005以降なら、Using句というDisposeメソッドを必ず呼び出すための構文がありますので、これを利用するのをお勧めします。