オブジェクトを破棄して null に設定する必要がありますか、それともスコープ外になったときにガベージ コレクターがクリーンアップしますか?
ベストアンサー1
オブジェクトは、使用されなくなったとき、およびガベージ コレクターが適切と判断したときにクリーンアップされます。場合によっては、オブジェクトを に設定してnull
スコープ外にする必要があることもあります (値が不要になった静的フィールドなど) が、全体的には を に設定する必要はありませんnull
。
オブジェクトの破棄に関しては、@Andre に同意します。オブジェクトが不要になった場合は、特にオブジェクトがアンマネージ リソースを使用している場合は、破棄することをお勧めしIDisposable
ます。アンマネージ リソースを破棄しないと、メモリ リークが発生します。
using
プログラムがステートメントのスコープから外れると、ステートメントを使用してオブジェクトを自動的に破棄できますusing
。
using (MyIDisposableObject obj = new MyIDisposableObject())
{
// use the object here
} // the object is disposed here
これは機能的には次のものと同等です:
MyIDisposableObject obj;
try
{
obj = new MyIDisposableObject();
}
finally
{
if (obj != null)
{
((IDisposable)obj).Dispose();
}
}