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.
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í
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.
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ě.
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. |
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..
1.Implementace a likvidace nespravovaných zdrojů. K dispozici zde
2. Sharma, Nitya. "Back to Basics - Dispose Vs Finalize." C # Corner. K dispozici zde
1.'Csharp Logo'By Andres15alvarez - vlastní práce, (CC BY-SA 4.0) přes Commons Wikimedia