Rozdiel medzi likvidáciou () a finalizáciou () v C #

Autor: Laura McKinney
Dátum Stvorenia: 2 Apríl 2021
Dátum Aktualizácie: 13 Smieť 2024
Anonim
Rozdiel medzi likvidáciou () a finalizáciou () v C # - Technológie
Rozdiel medzi likvidáciou () a finalizáciou () v C # - Technológie

Obsah


Metódy dispose () a finalize () sú metódy C #, ktoré sa používajú na uvoľnenie nespravovaných prostriedkov držaných objektom. Metóda dispose () je definovaná vo vnútri rozhrania IDisposable, zatiaľ čo metóda finalize () je definovaná vo vnútri objektu triedy. Hlavný rozdiel medzi dispozíciou () a finalizáciou () je v tom, že ide o metódu disponuje() musí užívateľ výslovne uplatniť, zatiaľ čo metóda dokončiť () je vyvolaná zberateľom odpadu, tesne pred zničením objektu. Pozrime sa na niektoré ďalšie rozdiely medzi nimi pomocou porovnávacej tabuľky uvedenej nižšie.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnaniezbaviť sa ()dokončiť ()
definovanýMetóda dispose () je definovaná v rozhraní IDisposable interface.Metóda finalize () id definovaná v triede java.lang.object.
syntaxverejné neplatné Dispose () {
// Zlikvidujte kód tu
}
chránené void finalize () {
// kód dokončenia tu
}
vyvolaný Metódu dispose () vyvolá užívateľ.Metódu finalize () vyvolá zberateľ odpadu.
účelMetóda dispose () sa používa na uvoľnenie nespravovaných prostriedkov vždy, keď je vyvolaná.Metóda finalize () sa používa na uvoľnenie nespravovaných prostriedkov pred zničením objektu.
uskutočnenieMetóda dispose () sa má implementovať vždy, keď existuje metóda close ().Metóda finalize () sa má implementovať pre nespravované zdroje.
Prístupový špecifikátorMetóda dispozície () sa vyhlasuje za verejnú.Metóda finalize () sa vyhlási za súkromnú.
akčné Metóda dispose () je rýchlejšia a okamžite zlikviduje objekt.Finalizácia metódy je pomalšia v porovnaní s likvidáciou
výkonMetóda disponuje () vykonáva okamžitú akciu, a preto neovplyvňuje výkon webových stránok. Metóda finalizácia () je pomalšia ovplyvňuje výkonnosť webových stránok.


Definícia dispozície ()

Metóda dispose () uvoľňuje nespravované prostriedky, ktoré sú držané objektom triedy. Nespravovanými prostriedkami sú súbory, dátové pripojenia atď. Metóda dispose () sa deklaruje v rozhraní IDisposeable a implementuje ho trieda implementáciou rozhrania IDisposable. Táto metóda sa nevyvoláva automaticky. Programátor ju musí implementovať manuálne, keď vytvárate vlastnú triedu, ktorú budú používať ostatní. Metóda má nasledujúcu syntax:

public void dispose () {// Zlikvidujte kód tu}

Vo vyššie uvedenej syntaxi môžete zistiť, že metóda je vyhlásená za verejnú. Je to preto, že táto metóda je definovaná v rozhraní IDisposable interface a musí byť implementovaná triedou, ktorá implementuje toto rozhranie. Metóda sa preto vyhlási za verejnú, aby sa zabezpečila prístupnosť implementačnej triedy.


Táto metóda je vyvolaná manuálne kódom programu, ktorý je implementovaný na vyvolanie. Výkon metód je rýchly a okamžite uvoľňuje prostriedky, ktoré má objekt triedy.

Definícia finalizácie ()

Metóda finalize () je definovaná v objekt trieda. Používa sa na čistenie. Túto metódu nazýva zberateľ odpadu, keď sa odkaz na objekt dlho nepoužíva. Zberač odpadu uvoľňuje spravované prostriedky automaticky, ale ak chcete uvoľniť nespravované prostriedky, ako sú popisovače súborov, dátové pripojenie atď., Musí byť metóda finalizácie implementovaná manuálne. Zberač odpadu spustí metódu finalize () tesne predtým, ako úplne zničí objekt.

Syntax metódy je dokončená ():

protected void finalize () {// finalizačný kód tu}

Vo vyššie uvedenej syntaxi je metóda finalize () vyhlásená za chránenú. Dôvodom je to, že metóda finalizácia () nesmie byť prístupná zvonku triedy a musí byť prístupná iba pre zberateľa odpadu.

Metóda finalize () ovplyvňuje náklady na výkon, pretože neuvoľňuje pamäť okamžite. V C # sa metóda finalizácie nazýva automaticky pomocou deštruktorov.

  1. Metóda dispose () je definovaná v rozhraní IDisposable, Na druhej strane metóda finalize () je definovaná v triede objekt.
  2. Metóda dispose () musí byť vyvolaná manuálne vnútri kódu programátorom, zatiaľ čo finalizácia metódy je automaticky vyvolaná zberateľom odpadu skôr, ako zničí objekt.
  3. Likvidácia metódy by mohla byť vyvolaná kedykoľvek, zatiaľ čo finalizácia metódy je vyvolaná zberateľom odpadu, keď zistí, že tento objekt nebol dlho odkazovaný.
  4. Metóda dispose () sa implementuje do triedy po implementácii rozhrania IDisposable. Metóda finalizácia () sa musí implementovať iba pre nespravované zdroje pretože spravované prostriedky sú automaticky uvoľňované zberateľom odpadu.
  5. Špecifikátor prístupu metódy dispose () je verejný, pretože je definovaný v rozhraní IDisposable interface a bolo by implementované triedou, ktorá implementuje toto rozhranie, a preto by mala byť verejná. Na druhej strane, metóda finalize () má špecifikátora chráneného prístupu, takže by nemala byť prístupná žiadnemu členovi mimo triedy.
  6. Metóda dispose () je rýchla a uvoľňuje objekt okamžite, preto neovplyvňuje náklady na výkon. Metóda finalize () je pomalšia a neuvoľňuje prostriedky, ktoré má objekt okamžite.

záver:

Odporúča sa použiť metódu dispose () pred metódou finalize (), pretože je rýchlejšia ako finalizácia. V prípade potreby by sa dalo nazvať aj kedykoľvek.