Sommario:
Definizione - Cosa significa Finalize?
Finalize è un metodo oggetto che contiene il codice richiesto per liberare risorse non gestite ed eseguire operazioni di pulizia prima della Garbage Collection (GC).
Il metodo finalize viene utilizzato per ripulire le risorse non gestite da .NET. Sebbene .NET Framework sia progettato per rilasciare risorse gestite eseguendo in modo implicito attività di gestione della memoria, le risorse dell'applicazione non gestite, come handle di file e connessioni al database, devono essere esplicitamente rilasciate.
Techopedia spiega Finalize
Mentre finalize è progettato per essere implicitamente chiamato da GC, il metodo dispose può essere esplicitamente chiamato dal codice utente per liberare risorse.
Finalize è simile ai tradizionali distruttori C ++, poiché ognuno è responsabile della liberazione delle risorse degli oggetti. I distruttori C ++ vengono eseguiti immediatamente quando un oggetto esce dall'ambito, mentre finalize viene chiamato durante la pulizia dell'oggetto in GC. In C #, finalizzare non può essere chiamato o sovrascritto direttamente. Se viene dichiarato un distruttore, viene convertito nel metodo finalize quando viene compilato il programma.
Durante la finalizzazione, è necessario evitare l'allocazione di memoria o la chiamata di metodi virtuali. L'ambito di finalizzazione deve essere protetto in modo che sia accessibile solo all'interno della stessa classe o della sua classe derivata. Finalize non deve fare riferimento a nessun altro oggetto. In C #, chiamare finalizzare direttamente su un oggetto diverso dalla sua classe base è un'operazione non valida. Il codice di finalizzazione dovrebbe essere minimo senza chiamate in grado di bloccare il thread chiamante. Poiché finalize viene chiamato da un thread dedicato, il suo codice non deve utilizzare l'archiviazione locale del thread o qualsiasi tecnica che richieda l'affinità del thread.
L'uso di finalize come meccanismo di fallback per liberare memoria o risorse non gestite è essenziale, a causa della mancanza di determinismo e degli effetti sulle prestazioni del GC.
