Razlika između raspolaganja () i finalizacije () u C #

Autor: Laura McKinney
Datum Stvaranja: 2 Travanj 2021
Datum Ažuriranja: 5 Svibanj 2024
Anonim
Kohezijska politika je na vratima
Video: Kohezijska politika je na vratima

Sadržaj


Metode dispose () i finalize () su metode C # za koje se poziva da se oslobode neupravljanih resursa koje objekt posjeduje. Metoda dispose () definirana je unutar ID-a sučelja, dok je metoda finalize () definirana unutar objekta klase. Glavna razlika između dispose () i finalize () je u tome što je metoda raspolagati() mora korisnik izričito pozvati, a postupak Finalizirajte () poziva se sakupljač smeća, neposredno prije nego što se objekt uništi. Proučimo neke druge razlike među njima uz pomoć usporednog grafikona prikazanog dolje.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedburaspolagati ()dovršiti ()
definiranNačin dispose () definiran je u ID-u interfejsa sučelja.Metoda finalize () id definirana u klasi java.lang.object.
Sintaksajavno nevažeće Dispose () {
// Ovdje odložite kod
}
zaštićena praznina finalize () {
// ovdje završni kod
}
pozivati Korisnik poziva metodu dispose ().Metoda finalize () poziva sakupljač smeća.
SvrhaMetoda dispose () koristi se za oslobađanje neupravljanih resursa kad god se ona poziva.Metoda finalize () koristi se za oslobađanje neupravljanih resursa prije nego što se objekt uništi.
izvršenjeMetoda dispose () treba se provoditi kad postoji metoda close ().Metoda finalize () provodi se za neupravljane resurse.
Specifikator pristupaMetoda dispose () proglašava se javnom.Metoda finalize () proglašena je privatnom.
Radnja Metoda dispose () je brža i odmah odlaže objekt.Metoda dovršavanja je sporija u odnosu na zbrinjavanje
IzvođenjeMetoda raspolaganja () izvodi trenutnu radnju, stoga ne utječe na performanse web stranica. Spora metoda finalize () utječe na performanse web stranica.


Definicija raspolaganja ()

Metoda dispose () oslobađa neupravljane resurse koje drži objekt klase. Neupravljani resursi su datoteke, podatkovne veze itd. Metoda dispose () deklarirana je u sučelju IDisposeable a klasa ga provodi primjenom sučelja IDisposable. Ova metoda se ne poziva automatski. Programer ga mora ručno implementirati prilikom stvaranja prilagođene klase koju će koristiti drugi. Metoda ima sljedeću sintaksu:

javno nevažeće raspolaganje () {// Rasporedi kod ovdje}

U gornjoj sintaksi možete primijetiti da je metoda deklarirana kao javna. To je zato što je ova metoda definirana u ID-u sučelja sučelja i mora ga implementirati klasa koja implementira ovo sučelje. Dakle, da bi se osigurala dostupnost razredu provedbe, metoda je deklarirana kao javna.

Ovu metodu ručno se poziva kodom programa dok se provodi za pozivanje. Performanse metoda su brze i trenutno oslobađaju resurse koje posjeduje objekt klase.

Definicija finalize ()

Metoda finalize () definirana je u objekt klase. Koristi se za aktivnosti čišćenja. Ovu metodu naziva sakupljač smeća kada se referenca na neki objekt ne koristi duže vrijeme. Skupljač smeća automatski oslobađa upravljane resurse, ali ako želite osloboditi neupravljane resurse kao što su rukovanje datotekama, podatkovna veza itd., Metoda finalizacije mora se implementirati ručno. Skupljač smeća poziva metodu finalize () neposredno prije nego što u potpunosti uništi objekt.


Sintaksa metode finalize ():

protected void finalize () {// konačni kod ovdje)

U sintaksi gore, metoda finalize () je deklarirana kao zaštićena. Razlog za to je što metoda finalize () ne smije biti dostupna izvan klase, a mora biti dostupna samo sakupljaču smeća.

Metoda finalize () utječe na cijenu izvedbe jer ne oslobađa memoriju odmah. U C # metodu dovršetka poziva se automatski s destruktorima.

  1. Način dispose () definiran je u sučelju IDisposable, S druge strane, metoda finalize () je definirana u klasi objekt.
  2. Metoda dispose () mora programer ručno pozvati unutar koda, dok dovršavanje metode automatski poziva skupljač smeća prije nego što uništi objekt.
  3. Odlaganje metode moglo bi se pozvati u bilo kojem trenutku, dok dovršetak metode poziva sakupljač smeća kad utvrdi da se na taj objekt dugo nije spominjao.
  4. Metoda dispose () provodi se u klasi nakon implementacije ID-a sučelja. Metoda finalize () mora se primijeniti samo za neupravljani resursi jer se upravljanim resursima automatski oslobađa skupljač smeća.
  5. Specifikator pristupa dispose () je javni kako je definiran u ID-u sučelja sučelja, a primijenila bi ga klasa koja implementira ovo sučelje, pa bi trebao biti javan. S druge strane, metoda finalize () ima zaštićeni specifikator pristupa tako da ne smije biti dostupna nijednom članu izvan klase.
  6. Metoda dispose () je brza i odmah oslobađa objekt, stoga ne utječe na trošak izvedbe. Metoda finalize () je sporija i ne oslobađa resurse koje objekt posjeduje odmah.

Zaključak:

Predlaže se korištenje metode dispose () nad metodom finalize () jer je brže od finaliziranja. Također, moglo bi se zvati bilo kada, kad je potrebno.