まず、これが重複していると見なされた場合は申し訳ありません-それが一般的なトピックであることは知っていますが、調べたところ満足のいく答えが見つかりませんでした.
をいつ使用するかを尋ねる質問がたくさんありますが、IDisposable
私が読んだすべてのことから、作成するすべてのクラスにそれを実装しない理由がわかりません。失うものは何ですか?パフォーマンスに大きな影響がありますか?
私の理解の一部は、オブジェクトが所有する他の IDisposables を Dispose()ing することIDisposable
です
。私の無知を許してください、しかしこれは与えられたオブジェクトのフィールド/プロパティにのみ適用されますか、それともそのメソッド内で作成されたオブジェクトにも適用されますか?
たとえば、Font
を実装するクラス内のメソッド内で a が作成されたがIDisposable
、ブロックでFont
初期化されていない場合、またはメソッドの最後に明示的に d がある場合。親/クラスがGCd/破棄されたときに破棄されますか? または、そうでなければ、決して処分されませんか?using
.Dispose()
IDisposable
Font
脱線するつもりはありませんが、このような「キャッチオール」として機能することが本当である場合(そうでなければ破棄されないままになるエラーのある子IDisposable
オブジェクトを効果的に破棄します)、その理由だけで正当化するのに十分ではありません可能な限り常に実装していIDisposable
ますか?