Recomandat, 2022

Alegerea Editorului

Diferența dintre dispose () și finalize () în C #

Metodele dispun () și finalizează () sunt metodele C # care sunt invocate pentru a elibera resursele neadministrate deținute de un obiect. Metoda dispose () este definită în interiorul interfeței IDisposable, în timp ce metoda finalize () este definită în interiorul obiectului de clasă. Principala diferență dintre dispose () și finalize () este că metoda dispose () trebuie invocată în mod explicit de către utilizator, în timp ce metoda finalize () este invocată de colectorul de gunoi, chiar înainte ca obiectul să fie distrus. Să studiem alte diferențe între ele cu ajutorul unei diagrame de comparație prezentată mai jos.

Diagramă de comparație

Bazele comparațieidispose ()finalizeaza ()
DefinitMetoda dispose () este definită în interfața interfață interfață interfață.Metoda finalizează () id definită în clasa java.lang.object.
Sintaxăpublic void Dispose () {
// Eliminați codul aici
}
protejat void finalize () {
// cod de finalizare aici
}
invocatMetoda dispose () este invocată de utilizator.Metoda finalize () este invocată de colectorul de gunoi.
ScopMetoda dispose () este folosită pentru a elibera resursele neangajate ori de câte ori este invocată.Metoda finalize () este folosită pentru a elibera resursele neadministrate înainte de distrugerea obiectului.
Punerea în aplicareMetoda dispose () trebuie implementată ori de câte ori există o metodă close ().Metoda finalize () urmează să fie implementată pentru resursele neadministrate.
Specificator de accesMetoda dispose () este declarată publică.Metoda finalize () este declarată privată.
AcțiuneMetoda dispose () este mai rapidă și dispare instantaneu un obiect.Metoda finalizată este mai lentă comparativ cu eliminarea
PerformanţăMetoda dispune () efectuează acțiunea instantanee, prin urmare, nu afectează performanța site-urilor Web.Metoda de finalizare () care afectează mai lent performanța site-urilor web.

Definiția dispose ()

Metoda dispose () eliberează resursele neadministrate care sunt păstrate de un obiect al clasei. Resursele neangajate sunt fișiere, conexiuni de date etc. Metoda dispose () este declarată în interfața IDispostabilă și este implementată de clasă prin implementarea interfeței IDisposabile. Această metodă nu este apelată automat. Programatorul trebuie să-l implementeze manual atunci când creați o clasă personalizată care va fi utilizată de alții. Metoda are următoarea sintaxă:

 public void dispose () {// Eliminați codul aici} 

În sintaxa de mai sus, puteți observa că metoda este declarată publică. Aceasta se datorează faptului că această metodă este definită în interfața IDisposibilă și trebuie implementată de clasa care implementează această interfață. Astfel, pentru a asigura accesul la clasa de implementare, metoda este declarată publică.

Această metodă este invocată manual de codul unui program așa cum este implementat pentru a invoca. Performanța metodelor este rapidă și eliberează instantaneu resursele deținute de obiectul unei clase.

Definiția finalize ()

Metoda finalize () este definită în clasa de obiecte . Este utilizat pentru activități de curățare. Această metodă este apelată de către colectorul de gunoi atunci când referința unui obiect nu este folosită pentru o perioadă lungă de timp. Colectorul de gunoi eliberează automat resursele gestionate, dar dacă doriți să eliberați resursele neadministrate cum ar fi mânerul fișierelor, conexiunea de date etc., metoda finalizării trebuie implementată manual. Colectorul de gunoi invocă finalizarea metodei () chiar înainte de a distruge complet obiectul.

Sintaxa metodei finalizeaza ():

 protejat void finalize () {// cod de finalizare aici} 

În sintaxa de mai sus, metoda finalize () este declarată protejată. Motivul din spatele acestui lucru este că metoda finalizată () nu trebuie să fie accesibilă din afara clasei și trebuie să fie accesibilă numai colectorului de gunoi.

Metoda finalize () afectează costul performanței deoarece nu eliberează instantaneu memoria. În metoda C # metoda finalizării se numește automat cu destructori.

Diferențele cheie dintre dispose () și finalize ()

  1. Metoda dispose () este definită într-o interfață IDposposable . Pe de altă parte, metoda finalize () este definită în obiectul de clasă.
  2. Metoda dispose () trebuie invocată manual în interiorul codului de către un programator, în timp ce metoda finalizată este invocată automat de colectorul de gunoi înainte de a distruge obiectul.
  3. Metoda dispose ar putea fi invocată oricând, în timp ce metoda finalizată este invocată de colectorul de gunoi atunci când constată că acel obiect nu a fost referit pentru o lungă perioadă de timp.
  4. Metoda dispose () este implementată într-o clasă după implementarea interfeței IDposposable. Metoda finalize () trebuie implementată numai pentru resursele neadministrate deoarece resursele gestionate sunt eliberate automat de către colectorul de gunoi.
  5. Specificatorul de acces al metodei dispose () este public, așa cum este definit în interfața IDisposibil și ar fi implementat de clasa care implementează această interfață, prin urmare ar trebui să fie publică. Pe de altă parte, metoda finalize () are un specificator de acces protejat, astfel încât acesta să nu fie accesibil oricărui membru din afara clasei.
  6. Metoda dispose () este rapidă și eliberează instantaneu obiectul, deci nu afectează costul de performanță. Metoda finalize () este mai lentă și nu eliberează imediat resursele deținute de obiect.

Concluzie:

Se sugerează utilizarea metodei dispose () asupra metodei finalize (), deoarece este mai rapidă decât finalizarea. De asemenea, ar putea fi numit oricând, când este necesar.

Top