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.
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
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.
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.
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. |
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.
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
1. "Logo Csharp" di Andres 15alvarez - Opera propria, (CC BY-SA 4.0) attraverso Commons Wikimedia