Come pulire le risorse non gestite in C # [duplicato]

Jan 20 2021

Ho questa classe:

    public class A
    {
//Some logic code here
    }

La mia domanda è come posso eliminare o distruggere qualsiasi oggetto creato in base a questa classe dopo essere uscito dall'ambito?

Per esempio:

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

dopo //some code herevoglio che l' aoggetto venga distrutto o smaltito e liberando la sua memoria allocata.

Risposte

1 ispiro Jan 20 2021 at 03:55

Ignorerò il titolo e mi concentrerò sul corpo della domanda poiché sembra evidente dalla domanda quale sia il problema.

La risposta breve: non lo fai. Questo sarà gestito automaticamente dal garbage collector quando lo riterrà necessario. (Non è necessario eseguire il Garbage Collector. Ciò avviene automaticamente.)

Il garbage collector cerca quindi entità che sono uscite dall'ambito, come anel tuo esempio, e libererà lo spazio che hanno utilizzato. Vedrà quindi che anche gli interni di asono, ovviamente, fuori ambito (a meno che non siano referenziati altrove nel codice) e li gestirà.

Detto questo, quando usi variabili di classi che implementano Disposeè meglio chiamare Disposeesplicitamente o usare usingblocchi per farlo. Puoi anche implementare un finalizzatore che verrà eseguito quando aviene eliminato. Ma sembra che non sia quello che stavi chiedendo.