Unterschied zwischen dispose () und finalize () in C #

Autor: Laura McKinney
Erstelldatum: 2 April 2021
Aktualisierungsdatum: 5 Kann 2024
Anonim
LIVING OFF GRID in a FOREST CABIN - What We Do at Night | BLOWTORCH & FIRE to PROTECT WOOD - Ep.134
Video: LIVING OFF GRID in a FOREST CABIN - What We Do at Night | BLOWTORCH & FIRE to PROTECT WOOD - Ep.134

Inhalt


Methoden dispose () und finalize () sind die Methoden von C #, die aufgerufen werden, um die nicht verwalteten Ressourcen eines Objekts freizugeben. Die dispose () -Methode ist in der Schnittstelle IDisposable definiert, während die Methode finalize () im Klassenobjekt definiert ist. Der Hauptunterschied zwischen dispose () und finalize () ist die Methode entsorgen() muss vom Benutzer explizit aufgerufen werden, wohingegen die Methode finalize () wird vom Garbage Collector aufgerufen, kurz bevor das Objekt zerstört wird. Untersuchen wir einige andere Unterschiede anhand der folgenden Vergleichstabelle.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den Vergleichdispose ()finalize ()
DefiniertDie Methode dispose () ist in der Schnittstelle IDisposable interface definiert.Die in der Klasse java.lang.object definierte Methode finalize ().
Syntaxpublic void Dispose () {
// Code hier ablegen
}
Geschützte Leere finalize () {
// Finalisierungscode hier
}
Aufgerufen Die Methode dispose () wird vom Benutzer aufgerufen.Die Methode finalize () wird vom Garbage Collector aufgerufen.
ZweckDie Methode dispose () wird verwendet, um nicht verwaltete Ressourcen bei jedem Aufruf freizugeben.Die Methode finalize () wird verwendet, um nicht verwaltete Ressourcen freizugeben, bevor das Objekt zerstört wird.
ImplementierungDie Methode dispose () ist immer dann zu implementieren, wenn es eine close () -Methode gibt.Die Methode finalize () soll für nicht verwaltete Ressourcen implementiert werden.
ZugriffsspezifiziererDie Methode dispose () ist als public deklariert.Die Methode finalize () wird als privat deklariert.
Aktion Die Methode dispose () ist schneller und löscht sofort ein Objekt.Die Methode finalize ist im Vergleich zur Entsorgung langsamer
PerformanceDie Methode disposes () führt die augenblickliche Aktion aus und beeinträchtigt daher nicht die Leistung von Websites. Die Methode finalize (), die langsamer ist, wirkt sich auf die Leistung der Websites aus.


Definition von dispose ()

Die dispose () -Methode gibt die nicht verwalteten Ressourcen frei, die von einem Objekt der Klasse gehalten werden. Die nicht verwalteten Ressourcen sind Dateien, Datenverbindungen usw. Die Methode dispose () ist in der Schnittstelle deklariert IDisposeable und es wird von der Klasse implementiert, indem die Schnittstelle IDisposable implementiert wird. Diese Methode wird nicht automatisch aufgerufen. Der Programmierer muss es manuell implementieren, wenn Sie eine benutzerdefinierte Klasse erstellen, die von anderen verwendet wird. Die Methode hat folgende Syntax:

public void dispose () {// Code hier ablegen}

In der obigen Syntax können Sie beobachten, dass die Methode als öffentlich deklariert ist. Dies liegt daran, dass diese Methode in der Schnittstelle IDisposable definiert ist und von der Klasse implementiert werden muss, die diese Schnittstelle implementiert. Um den Zugriff auf die implementierende Klasse zu ermöglichen, wird die Methode als öffentlich deklariert.


Diese Methode wird manuell durch den Code eines Programms aufgerufen, das zum Aufrufen implementiert ist. Die Leistung der Methoden ist schnell und setzt die vom Objekt einer Klasse gehaltenen Ressourcen sofort frei.

Definition von finalize ()

Die finalize () Methode ist in der definiert Objekt Klasse. Es wird für Aufräumarbeiten verwendet. Diese Methode wird vom Garbage Collector aufgerufen, wenn die Referenz eines Objekts längere Zeit nicht verwendet wird. Der Garbage Collector gibt die verwalteten Ressourcen automatisch frei. Wenn Sie jedoch nicht verwaltete Ressourcen wie Dateihandle, Datenverbindung usw. freigeben möchten, muss die Finalisierungsmethode manuell implementiert werden. Der Garbage Collector ruft die Methode finalize () auf, kurz bevor das Objekt vollständig zerstört wird.

Die Syntax der Methode finalize ():

Geschützte Leere finalize () {// Finalisierungscode hier}

In der obigen Syntax ist die Methode finalize () als protected deklariert. Der Grund dafür ist, dass die Methode finalize () nicht von außerhalb der Klasse und nur für den Garbage Collector zugänglich sein darf.

Die Methode finalize () wirkt sich auf die Kosten der Leistung aus, da der Speicher nicht sofort freigegeben wird. In C # wird die finalize-Methode automatisch mit Destruktoren aufgerufen.

  1. Die Methode dispose () ist in einer Schnittstelle definiert IDisposable. Andererseits ist die Methode finalize () in der Klasse definiert Objekt.
  2. Die Methode dispose () muss von einem Programmierer manuell im Code aufgerufen werden, während die Methode finalize vom Garbage Collector automatisch aufgerufen wird, bevor das Objekt zerstört wird.
  3. Die Methode dispose kann jederzeit aufgerufen werden, wohingegen die Methode finalize vom Garbage Collector aufgerufen wird, wenn festgestellt wird, dass auf dieses Objekt seit langer Zeit nicht mehr verwiesen wurde.
  4. Die Methode dispose () wird nach der Implementierung der Schnittstelle IDisposable in einer Klasse implementiert. Die Methode finalize () muss nur für implementiert werden nicht verwaltete Ressourcen weil die verwalteten Ressourcen automatisch vom Garbage Collector freigegeben werden.
  5. Der Zugriffsspezifizierer der Methode dispose () ist öffentlich, wie er in der Schnittstelle IDisposable definiert ist, und er würde von der Klasse implementiert, die diese Schnittstelle implementiert, daher sollte er öffentlich sein. Andererseits verfügt die Methode finalize () über einen geschützten Zugriffsbezeichner, sodass kein Mitglied außerhalb der Klasse darauf zugreifen kann.
  6. Die Methode dispose () ist schnell und gibt das Objekt sofort frei, daher hat sie keinen Einfluss auf die Leistungskosten. Die Methode finalize () ist langsamer und gibt die vom Objekt gehaltenen Ressourcen nicht sofort frei.

Fazit:

Es wird empfohlen, die Methode dispose () über der Methode finalize () zu verwenden, da diese schneller ist als finalize. Sie kann bei Bedarf auch jederzeit aufgerufen werden.