|
> 表題の件ですが、全てのオブジェクトに対してdisposeする(呼ぶ)必要は無いと思いますが > しなければいけない(すべき?)オブジェクトはどのように判断すればよいでしょうか。
すべての場合をカバーする、汎用的な基準はありません。
個々のクラスの実装や、利用の仕方によっても、どうするべきかは変わります。
>取り合えず、データベース系とかグラフィック系とかはしなきゃいけないんだろうなぁ・・・
クラスの種別は関係ありません。
クラスが IDisposable インターフェースを実装しているなら、クラスインスタンスが回収されて消滅するまでに IDisposable.Dispose() が呼び出されなければなりません。
ですが、その IDisposable.Dispose() 呼び出しをいつだれが行うべきか?というのは、状況によって異なるのです。
> それと、connectionとかはdisposeを呼べばcloseは呼ばなくて良いのでしょうか。
「どの」コネクションでしょう?
SqlConnection は IDisposable.Dispose(), または Close() のどちらかを呼び出せばよいようですが、ODP.NET かなんかで、どちらか一方だけではダメなものがあったような。(決してそれが良い実装とは言えませんが)
|