Rozdíl mezi dispozicí () a finalizací ()

Klíčový rozdíl - zlikvidujte () vs dokončit ()
 

klíčový rozdíl mezi dispose () a finalize () je to dispose () musí být explicitně vyvolán programátorem, zatímco finalize () je vyvolán sběratelem odpadu před zničením objektu.

Dispose () je metoda pro uzavření nebo uvolnění nespravovaných prostředků, jako jsou soubory, toky v držení objektu. Finalizace je metoda provádění operací čištění na nespravovaných prostředcích držených aktuálním objektem před zničením objektu.

OBSAH

1. Přehled a klíčový rozdíl
2. Co je k dispozici ()
3. Co je finalizace ()
4. Podobnosti mezi dispozicí () a finalizací ()
5. Porovnání vedle sebe - dispose () vs finalize () v tabulkové formě
6. Shrnutí

Co je k dispozici ()?

Jednou z nejdůležitějších výhod .NET framework je, že poskytuje automatický sběr odpadu. Automaticky uvolní paměť nepoužívaných objektů. V programovacích jazycích, jako jsou C a C ++, musí programátor spravovat správu paměti sám. Ale v jazycích, jako je C #, který je postaven na rozhraní .NET framework, poskytuje sběratel odpadu. Pomáhá spravovat paměť. Nelze jej použít k uvolnění nespravovaných prostředků paměti. K dosažení tohoto úkolu lze použít metodu dispose ().

Metodu dispose () lze použít k uvolnění prostředků, jako jsou databázová připojení, popisovače souborů atd. Tato metoda není volána automaticky. Programátor by proto měl tuto metodu implementovat. Jakmile je tato metoda vyvolána, uvolní se paměť pro konkrétní nespravovaný prostředek. Tato metoda je deklarována v rozhraní IDisposeable.

Co je dokončeno ()?

Metoda finalizace je volána sběratelem odpadků pouze tehdy, když není odkaz na objekt dále používán. Tato metoda se nazývá těsně před zničením objektu. Tato metoda je implementována pomocí destruktoru. Metoda finalizace je definována ve třídě java.lang.object. Tato metoda je prohlášena za chráněnou. Není vyhlašováno jako veřejné, aby se zabránilo přístupu ostatních tříd. Celkově může metoda finalizace minimalizovat výkon programu, protože nevyvolává paměť okamžitě.

Jaká je podobnost mezi dispozicí () a finalizací ()?

  • Dispose () a finalize () lze použít k uvolnění paměti přidělené pro nespravovaný prostředek.

Jaký je rozdíl mezi dispose () a finalize ()?

dispose () vs finalize ()

Dispose () je metoda pro uzavření nebo uvolnění nespravovaných prostředků, jako jsou soubory, toky v držení objektu. Finalizace je metoda provádění operací čištění na nespravovaných prostředcích držených aktuálním objektem před zničením objektu.
 Objektivní
Metoda dispose se používá k uvolnění nespravovaných prostředků, když je vyvolána. Metoda finalizace se používá k uvolnění nespravovaných prostředků před zničením objektu.
Definované rozhraní nebo třída
Dispose () je definován v rozhraní IDisposable interface. Finalizace () je definována ve třídě java.lang.object.
 Metoda vyvolání
Metodu likvidace vyvolá programátor. Metoda finalizace je vyvolána sběratelem odpadu.
Přístup ke specifikátoru
Metoda nakládání je veřejná. Metoda finalizace je chráněna.
Rychlost
Metoda likvidace je vyvolána okamžitě. Metoda finalizace je vyvolána pomalu.
Výkon
Likvidace nebude minimalizovat výkon programu. Metoda finalizace může minimalizovat výkon programu.

Shrnutí - zlikvidujte () vs dokončit ()

Tento článek diskutoval rozdíl mezi metodami likvidace a finalizace v C #. Rozdíl mezi dispose () a finalize () je ten, že dispose () musí být programátorem explicitně vyvolán, zatímco finalize () je vyvolán sběratelem odpadu před zničením objektu..

Odkaz:

1.Implementace a likvidace nespravovaných zdrojů. K dispozici zde  
2. Sharma, Nitya. "Back to Basics - Dispose Vs Finalize." C # Corner. K dispozici zde  

Obrázek se svolením:

1.'Csharp Logo'By Andres15alvarez - vlastní práce, (CC BY-SA 4.0) přes Commons Wikimedia