1. ホーム
  2. c#

[解決済み】オブジェクトを破棄してnullにする必要があるのか?

2022-03-25 05:51:22

質問

オブジェクトを破棄してnullにする必要がありますか?それとも、オブジェクトがスコープ外に出たときにガベージコレクタが掃除してくれるのでしょうか?

どのように解決するのですか?

オブジェクトは、使用されなくなったときや、ガベージコレクタが適切と判断したときに、クリーンアップされます。 時には、オブジェクトを 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();
    }
}