オブジェクトを破棄して null に設定する必要がありますか? 質問する

オブジェクトを破棄して null に設定する必要がありますか? 質問する

オブジェクトを破棄して 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();
    }
}

おすすめ記事