1

Dispose()を使用することは知っていますが、クラスはIDisposableから継承される必要がありますが、私のアプリケーションでは、クラスはIDisposableを継承していません。単に、fooObjectにnullを割り当てると、リソースの割り当てが解除されますか?

ありがとう!

4

2 に答える 2

3

に割り当てることnullは通常役に立ちません(主に、はるかに長く存続するオブジェクトのフィールドを解放する場合に役立ちます)-それは確かに収集を強制しません。Dispose()コレクションとは関係がなく、必要なときに使用することを目的としています。プロンプトが必要なDispose()リソース(管理されていないリソース、接続など)がない場合は、実装IDisposableする必要はありません。

GCはそのままにしておきます。選択すると効率的に収集されます。これは「通常の」.NETでは世代別スキームを意味します。短命のオブジェクトは収集するのに非常に効率的です。

于 2012-04-09T10:25:35.223 に答える
0

オブジェクトが独自のクラスであり、null値を割り当てる代わりに、オブジェクトにdisposeメカニズムを配置してdisposeする場合は、メモリとパフォーマンスをより細かく制御できるため、より適切です。

オブジェクトを明示的に破棄することは、悪い習慣ではありません。GCはそのようなことを行いますが、システムは、オブジェクトがスコープ外になるときと、ガベージコレクションの準備ができるときを待つ必要があります。これには時間がかかる場合がありますので、役に立たなくなったオブジェクトは廃棄することをお勧めします。

于 2012-04-09T10:25:54.433 に答える