C#で管理されていないリソースをクリーンアップする方法[重複]

Jan 20 2021

私はこのクラスを持っています:

    public class A
    {
//Some logic code here
    }

私の質問は、スコープを出た後、このクラスに基づいて作成されたオブジェクトをどのように破棄または破棄できるかということです。

例えば:

  A a = new A();
    //some code here

オブジェクトを破棄または破棄して、割り当てられたメモリを解放し//some code hereたい後a

回答

1 ispiro Jan 20 2021 at 03:55

問題が何であるかは質問から明らかであるように思われるので、タイトルを無視して質問の本文に集中します。

簡単な答え:あなたはしません。これは、ガベージコレクターが必要と判断したときに自動的に処理されます。(ガベージコレクターを実行する必要はありません。これは自動的に行われます。)

次に、ガベージコレクターaは、例のようにスコープ外になっているエンティティを探し、使用したスペースを解放します。次に、の内部aも明らかにスコープ外になっていることがわかり(コードの他の場所で参照されている場合を除く)、それらを処理します。

そうは言っても、実装Disposeするクラスの変数を使用する場合は、Dispose明示的に呼び出すか、usingブロックを使用してそれを実行するのが最善です。a廃棄時に実行されるファイナライザーを実装することもできます。しかし、それはあなたが求めていたものではないようです。