Dispose()を使用することは知っていますが、クラスはIDisposableから継承される必要がありますが、私のアプリケーションでは、クラスはIDisposableを継承していません。単に、fooObjectにnullを割り当てると、リソースの割り当てが解除されますか?
ありがとう!
に割り当てることnull
は通常役に立ちません(主に、はるかに長く存続するオブジェクトのフィールドを解放する場合に役立ちます)-それは確かに収集を強制しません。Dispose()
コレクションとは関係がなく、必要なときに使用することを目的としています。プロンプトが必要なDispose()
リソース(管理されていないリソース、接続など)がない場合は、実装IDisposable
する必要はありません。
GCはそのままにしておきます。選択すると効率的に収集されます。これは「通常の」.NETでは世代別スキームを意味します。短命のオブジェクトは収集するのに非常に効率的です。
オブジェクトが独自のクラスであり、null値を割り当てる代わりに、オブジェクトにdisposeメカニズムを配置してdisposeする場合は、メモリとパフォーマンスをより細かく制御できるため、より適切です。
オブジェクトを明示的に破棄することは、悪い習慣ではありません。GCはそのようなことを行いますが、システムは、オブジェクトがスコープ外になるときと、ガベージコレクションの準備ができるときを待つ必要があります。これには時間がかかる場合がありますので、役に立たなくなったオブジェクトは廃棄することをお勧めします。