Differenza tra dispose () e finalize ()

Differenza chiave - smaltire () vs ultimare ()
 

Il differenza fondamentale tra dispose () e finalize () è quello dispose () deve essere esplicitamente invocato dal programmatore mentre finalize () viene invocato dal garbage collector prima di distruggere l'oggetto.

Dispose () è un metodo per chiudere o rilasciare risorse non gestite come i file, i flussi tenuti da un oggetto. Il finalize è un metodo per eseguire operazioni di pulizia su risorse non gestite detenute dall'oggetto corrente prima che l'oggetto venga distrutto.

CONTENUTO

1. Panoramica e differenza chiave
2. Cosa è dispose ()
3. Cosa è finalizzare ()
4. Somiglianze tra dispose () e finalize ()
5. Confronto affiancato - dispose () vs finalize () in forma tabulare
6. Sommario

Cosa è dispose ()?

Uno dei vantaggi più importanti di .NET framework è che fornisce la garbage collection automatica. Rilascia automaticamente la memoria degli oggetti che non vengono utilizzati. Nei linguaggi di programmazione come C e C ++, il programmatore deve gestire da solo la gestione della memoria. Ma in linguaggi come C # che è costruito su .NET framework fornisce il garbage collector. Aiuta a gestire la memoria. Non può essere utilizzato per rilasciare le risorse di memoria non gestite. Il metodo dispose () può essere utilizzato per ottenere questo compito.

Il metodo dispose () può essere utilizzato per rilasciare risorse quali connessioni al database, gestori di file, ecc. Questo metodo non viene chiamato automaticamente. Pertanto, il programmatore dovrebbe implementare questo metodo. Non appena viene richiamato questo metodo, viene rilasciata la memoria per la particolare risorsa non gestita. Questo metodo è dichiarato nell'interfaccia IDisposeable.

Cosa è finalizzare ()?

Il metodo finalize viene chiamato dal garbage collector solo quando il riferimento a un oggetto non viene ulteriormente utilizzato. Questo metodo è chiamato appena prima di distruggere l'oggetto. Questo metodo è implementato con l'aiuto del distruttore. Il metodo finalize è definito nella classe java.lang.object. Questo metodo è dichiarato come protetto. Non è dichiarato pubblico per evitare l'accesso da parte delle altre classi. Complessivamente, il metodo finalize può minimizzare le prestazioni del programma perché non libera la memoria all'istante.

Qual è la somiglianza tra dispose () e finalize ()?

  • Dispose () e finalize () possono essere utilizzati per liberare la memoria allocata per una risorsa non gestita.

Qual è la differenza tra dispose () e finalize ()?

dispose () vs finalize ()

Dispose () è un metodo per chiudere o rilasciare risorse non gestite come i file, i flussi tenuti da un oggetto. Il finalize è un metodo per eseguire operazioni di pulizia su risorse non gestite detenute dall'oggetto corrente prima che l'oggetto venga distrutto.
 Obbiettivo
Il metodo dispose viene utilizzato per liberare le risorse non gestite quando viene richiamato. Il metodo finalize viene utilizzato per liberare le risorse non gestite prima che l'oggetto venga distrutto.
Interfaccia definita o Classe
Dispose () è definito nell'interfaccia IDisposable dell'interfaccia. Finalize () è definito nella classe java.lang.object.
 Metodo di richiamo
Il metodo di smaltimento è invocato dal programmatore. Il metodo finalize è invocato dal garbage collector.
di accesso di
Il metodo di smaltimento è pubblico. Il metodo finalize è protetto.
Velocità
Il metodo di smaltimento viene richiamato all'istante. Il metodo finalize viene richiamato lentamente.
Prestazione
Lo smaltimento non ridurrà al minimo le prestazioni del programma. Il metodo finalize potrebbe minimizzare le prestazioni del programma.

Riepilogo: smaltire () vs ultimare ()

Questo articolo ha discusso la differenza tra disporre e finalizzare i metodi in C #. La differenza tra dispose () e finalize () è che, dispose () deve essere esplicitamente invocato dal programmatore mentre finalize () viene invocato dal garbage collector prima di distruggere l'oggetto.

Riferimento:

1.Implementare finalizzare e smaltire per ripulire le risorse non gestite. Disponibile qui  
2.Sharma, Nitya. "Back To Basics - Dispose Vs Finalize". C # Corner. Disponibile qui  

Cortesia dell'immagine:

1. "Logo Csharp" di Andres 15alvarez - Opera propria, (CC BY-SA 4.0) attraverso Commons Wikimedia