こんにちは、オブジェクトが Disposable で、何が優れているか知りたいです。
this.object.Dispose();
また
this.object = null;
また
this.object.Dispose();
this.object = null;
Dispose
using
ブロック内のオブジェクトを使用し、フレームワークに破棄させる方法がさらに優れています。
対象: this.object.Dispose();
vsthis.object = null;
オブジェクトを に設定すると、null
管理されていないリソースが未処理のままになる可能性があります。持つことの全体的な目的は、管理されていないリソースがIDisposable
使用後に確実に破棄されるようにすることです。
このインターフェイスの主な用途は、管理されていないリソースを解放することです。ガベージ コレクターは、管理対象オブジェクトが使用されなくなると、そのオブジェクトに割り当てられたメモリを自動的に解放します。ただし、ガベージ コレクションがいつ発生するかを予測することはできません。さらに、ガベージ コレクターは、ウィンドウ ハンドルや開いているファイルやストリームなどのアンマネージ リソースを認識しません。
null 値をチェックして適切に応答する他のコードがない限り、オブジェクトを に設定する必要Dispose
はありません。null
object.Dispose() または object = null
処分とは?IDisposable を実装する型には通常、このメソッドがあります (ただし、独自のパブリック メソッドを作成できます)。
public class Test:IDisposable
{
public void Dispose()
{
//release resources here managed and unmanaged
}
}
IDisposable を実装したので、最善の方法は
using (Test t = new Test())
{
}
ブロックフレームワークを使用してこれを行うと、すべてのリソースが処理されます。心配する必要はありません。また、オブジェクトのファイナライザー メソッドが Dispose() を呼び出す必要がある場合でも、
代わりに、あなたも行うことができます
Test t = new Test();
t.Dispose();
それをnullに設定するのはどうですか?
Test t = new Test();
t = null;
参照されたオブジェクトにはアクセスできなくなり、ガベージ コレクション (マネージド リソース) を実行できるようになりました。管理されていないリソースを自分で処理する必要があります。