Come pulire le risorse non gestite in C # [duplicato]
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 here
voglio che l' a
oggetto venga distrutto o smaltito e liberando la sua memoria allocata.
Risposte
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 a
nel tuo esempio, e libererà lo spazio che hanno utilizzato. Vedrà quindi che anche gli interni di a
sono, 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 Dispose
esplicitamente o usare using
blocchi per farlo. Puoi anche implementare un finalizzatore che verrà eseguito quando a
viene eliminato. Ma sembra che non sia quello che stavi chiedendo.