Priporočena, 2024

Izbira Urednika

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

Metode dispose () in finalize () so metode C #, ki so priklicane, da osvobodijo neupravljane vire, ki jih ima objekt. Metoda dispose () je definirana znotraj vmesnika IDisposable, medtem ko je metoda finalize () definirana znotraj predmeta razreda. Glavna razlika med dispos () in finalize () je v tem, da mora uporabnik metodo dispose () izrecno priklicati, medtem ko metodo finalize () prikliče zbiralec smeti, preden je predmet uničen. Preučimo nekatere druge razlike med njimi s pomočjo primerjalne tabele, prikazane spodaj.

Primerjalna tabela

Podlaga za primerjavodispose ()finaliziraj ()
DoločenoMetoda dispose () je definirana v vmesniku IDisposable vmesnika.ID načina finalize () je definiran v razredu java.lang.object.
Sintaksapublic void Dispose () {
// Tukaj odstranite kodo
}
zaščiteno neveljavno finaliziranje () {
// tukaj zaključimo kodo
}
PoklicanoUporabnik izbira metodo dispose ().Metod finalize () se prikliče s smetnjaka.
NamenMetoda dispose () se uporablja za osvoboditev neupravljanih virov, kadar koli je priklicana.Metoda finalize () se uporablja za odstranitev neupravljanih virov, preden se objekt uniči.
IzvajanjeMetoda dispose () je treba izvesti, kadar obstaja metoda close ().Način finalize () je treba izvesti za neupravljane vire.
Specifikator dostopaMetoda dispose () je razglašena kot javna.Metoda finalize () je razglašena kot zasebna.
UkrepMetoda dispose () je hitrejša in takoj odstranjuje predmet.Zaključek metode je počasnejši v primerjavi z odstranitvijo
IzvedbaMetoda razrešuje () trenutno dejanje, zato ne vpliva na uspešnost spletnih mest.Metoda finalize (), ki je počasnejša, vpliva na uspešnost spletnih mest.

Opredelitev odstranitve ()

Metoda dispose () sprosti neupravljane vire, ki jih ima predmet razreda. Neupravljani viri so datoteke, podatkovne povezave itd. Metoda dispose () je deklarirana v vmesniku IDisposeable in ga izvaja razred z izvajanjem vmesnika IDisposable. Ta metoda se ne pokliče samodejno. Programer ga mora izvajati ročno, ko ustvarjate razred po meri, ki ga bodo uporabljali drugi. Metoda ima naslednjo skladnjo:

 public void dispose () {// tukaj odstranite kodo} 

V zgornji sintaksi lahko opazite, da je metoda deklarirana kot javna. To je zato, ker je ta metoda definirana v vmesniku IDisposable in ga mora izvajati razred, ki izvaja ta vmesnik. Da bi zagotovili dostopnost izvajalnemu razredu, je metoda deklarirana kot javna.

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

Opredelitev dokončanja ()

Metoda finalize () je definirana v razredu objektov . Uporablja se za čiščenje. Ta metoda se pokliče s smetnjaka, ko se referenca objekta dolgo ne uporablja. Zbiralnik odpadkov samodejno osvobodi upravljane vire, vendar če želite osvoboditi neupravljane vire, kot so ročaj, podatkovna povezava itd., Je treba metodo finalizirati ročno. Zbiralnik smeti prikliče metodo finalize () tik preden popolnoma uniči objekt.

Skladnja metode finalize ():

 protected void finalize () {// tukaj zaključna koda} 

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

Metoda finalize () vpliva na stroške delovanja, saj pomnilnika ne osvobodi takoj. V C # se metoda finalizira samodejno z destruktorji.

Ključne razlike med odstranitvijo () in dokončanjem ()

  1. Metoda dispose () je definirana v vmesniku IDisposable . Po drugi strani je metoda finalize () definirana v predmetu razreda.
  2. Metoda dispose () mora biti ročno sprožena znotraj kode s programerjem, medtem ko se metoda finalizira samodejno pokliče s smetnjaka, preden uniči objekt.
  3. Metoda dispose je mogoče klicati kadarkoli, medtem ko metodo finalize prikliče zbiralec smeti, ko ugotovi, da se ta objekt dolgo ne sklicuje.
  4. Metoda dispose () je implementirana v razredu po implementaciji vmesnika IDisposable. Metoda finalize () mora biti izvedena samo za neupravljane vire, ker upravljani viri samodejno sprostijo zbiralec smeti.
  5. Specifikacija dostopa do metode dispose () je javna, ker je definirana v vmesniku IDisposable in jo bo izvajal razred, ki izvaja ta vmesnik, zato mora biti javni. Po drugi strani je metoda finalize () zaščitena specifikacija dostopa, tako da ne sme biti dostopna nobenemu članu izven razreda.
  6. Metoda dispose () je hitra in sprosti objekt takoj, zato ne vpliva na stroške izvajanja. Metoda finalize () je počasnejša in ne osveži sredstev, ki jih hrani objekt, takoj.

Sklep:

Predlaga se uporaba metode dispose () nad metodo finalize (), ker je hitrejša od finaliziranja. Prav tako se lahko po potrebi imenuje kadarkoli.

Top