Razlika med odstranjevanjem () in dokončanjem () v C #

Avtor: Laura McKinney
Datum Ustvarjanja: 2 April 2021
Datum Posodobitve: 13 Maj 2024
Anonim
High Density 2022
Video.: High Density 2022

Vsebina


Metode odstranjujejo () in dokončajo () so metode C #, ki jih prikličejo, da sprostijo nenadzorovane vire, ki jih ima predmet. Metoda dispose () je določena znotraj ID-ja vmesnika, medtem ko je metoda finalize () definirana znotraj predmeta razreda. Glavna razlika med odstranjevanjem () in dokončanjem () je v tem, da je metoda razpolagati() se mora uporabnik izrecno sklicevati, medtem ko je metoda dokončno () ga prikliče zbiralec smeti, tik preden objekt uniči. Preučimo še nekaj razlik med njimi s pomočjo spodnje primerjalne tabele.

  1. Primerjalna tabela
  2. Opredelitev
  3. Ključne razlike
  4. Zaključek

Primerjalna tabela

Osnove za primerjavoodtujiti ()dokončno ()
DoločenaNačin dispose () je opredeljen v vmesniku IDisposable vmesnik.Metoda finalize () id definirana v razredu java.lang.object.
Sintaksajavno razveljavitev Dispose () {
// Tukaj zavrzite kodo
}
zaščitena void finalize () {
// dokončna koda tukaj
}
Povabljeni Uporabnik sproži način dispose ().Metoda finalize () prikliče zbiralca smeti.
NamenMetoda dispose () se uporablja za sprostitev nenadzorovanih virov vsakič, ko se prikliče.Metoda finalize () se uporablja za sprostitev neupravljanih virov, preden se objekt uniči.
IzvajanjeMetoda dispose () se izvaja, kadar obstaja metoda close ().Metoda finalize () naj bi se izvajala za nenadzorovane vire.
Specifični dostopMetoda dispose () je razglašena za javno.Metoda finalize () je razglašena za zasebno.
Ukrep Metoda dispose () je hitrejša in predmet takoj odloži.Dokončanje metode je počasnejše v primerjavi z odstranjevanjem
IzvedbaMetoda razpolaga () izvede takojšnje delovanje, zato ne vpliva na uspešnost spletnih strani. Počasnejša metoda finalize () vpliva na uspešnost spletnih strani.


Opredelitev razpolaganja ()

Metoda dispose () sprosti nenadzorovane vire, ki jih hrani predmet razreda. Nenadzorovani viri so datoteke, podatkovne povezave itd. Metoda dispose () je navedena v vmesniku IDisposed razred pa ga izvaja z uvajanjem vmesnika IDisposable. Ta metoda se ne prikliče samodejno. Programer mora to izvajati ročno, ko ustvarjate razred po meri, ki ga bodo uporabljali drugi. Metoda ima naslednjo skladnjo:

javno neveljavno razpolaganje () {// Tukaj odloži kodo}

V zgornji sintaksi lahko opazite, da je metoda razglašena za javno. Zato, ker je ta metoda definirana v ID-ju vmesnika IDisposable in jo mora izvajati razred, ki izvaja ta vmesnik. Za zagotovitev dostopnosti izvedbenemu razredu je metoda razglašena za javno.

Ta metoda se ročno prikliče s kodo programa, ko se izvaja za priklic. Učinkovitost metod je hitra in takoj sprosti vire, ki jih ima predmet razreda.

Opredelitev dokončne ()

Metoda finalize () je določena v objekt razred. Uporablja se za čiščenje. Ta metoda se imenuje zbiralnik smeti, kadar se referenca predmeta ne uporablja dlje časa. Zbiralnik smeti samodejno sprosti upravljane vire, če pa želite sprostiti nenadzorovane vire, kot so ročaj datotek, podatkovna povezava itd., Morate način dokončanja izvesti ročno. Zbiralnik smeti prikliče metodo finalize (), tik preden objekt popolnoma uniči.


Sintaksa metode finalize ():

zaščitena void finalize () {// dokončna koda tukaj}

V zgornji sintaksi je metoda finalize () razglašena kot zaščitena. Razlog za to je, da metoda finalize () ne sme biti dostopna zunaj razreda in mora biti dostopna samo zbiralcu smeti.

Metoda finalize () vpliva na ceno izvedbe, saj pomnilnika ne sprosti takoj. V C # se metoda za dokončanje pokliče samodejno z destruktorji.

  1. Metoda dispose () je določena v vmesniku ID-uporaben. Po drugi strani je metoda finalize () definirana v razredu objekt.
  2. Metoda dispose () mora programer ročno poklicati znotraj kode, medtem ko metodo za dokončanje samodejno prikliče zbiralnik smeti, preden objekt uniči.
  3. Odstranjevanje metode se lahko prikliče kadarkoli, medtem ko se metoda dokončanja sklicuje na zbiralcu smeti, ko ugotovi, da na ta objekt že dolgo ni omenjen.
  4. Metoda dispose () se izvede v razredu po implementaciji vmesnika IDisposable. Metoda finalize () se mora izvajati samo za neregulirani viri ker upravljani viri zbiralnik smeti samodejno sprostijo.
  5. Specifik dostopa metode dispose () je javen, saj je opredeljen v vmesniku IDisposable in bi ga izvajal razred, ki izvaja ta vmesnik, zato mora biti javen. Po drugi strani pa metoda finalize () ima zaščiten specifikator dostopa, tako da ne bi smel biti dostopen nobenemu članu zunaj razreda.
  6. Metoda dispose () je hitra in predmet sprosti takoj, zato ne vpliva na stroške izvedbe. Metoda finalize () je počasnejša in ne sprosti virov, ki jih predmet ima v trenutku.

Zaključek:

Predlagamo, da uporabite metodo dispose () nad metodo finalize (), saj je hitrejša od dokončne. Prav tako bi ga lahko poklicali kadarkoli, ko bi bilo to potrebno.