Inhaltsverzeichnis:
Definition - Was bedeutet Finalisieren?
Finalize ist eine Objektmethode, die den Code enthält, der erforderlich ist, um nicht verwaltete Ressourcen freizugeben und Bereinigungsvorgänge vor der Garbage Collection (GC) auszuführen.
Die Methode finalize wird zum Bereinigen von Ressourcen verwendet, die nicht von .NET verwaltet werden. Obwohl .NET Framework so konzipiert ist, dass verwaltete Ressourcen durch implizites Ausführen von Speicherverwaltungsaufgaben freigegeben werden, müssen nicht verwaltete Anwendungsressourcen - wie Dateihandles und Datenbankverbindungen - explizit freigegeben werden.
Techopedia erklärt Finalize
Während finalize implizit vom GC aufgerufen werden soll, kann die dispose-Methode explizit vom Benutzercode aufgerufen werden, um Ressourcen freizugeben.
Finalize ähnelt herkömmlichen C ++ - Destruktoren, da jeder für die Freigabe von Objektressourcen verantwortlich ist. C ++ - Destruktoren werden sofort ausgeführt, wenn ein Objekt den Gültigkeitsbereich verlässt, während finalize während der Objektbereinigung bei GC aufgerufen wird. In C # kann finalize nicht direkt aufgerufen oder überschrieben werden. Wenn ein Destruktor deklariert wird, wird er beim Kompilieren des Programms in die Methode finalize konvertiert.
Während des Finalisierens muss die Speicherzuweisung oder der Aufruf virtueller Methoden vermieden werden. Der Bereich der Finalisierung sollte so geschützt werden, dass nur innerhalb derselben Klasse oder ihrer abgeleiteten Klasse darauf zugegriffen werden kann. Finalize sollte nicht auf andere Objekte verweisen. In C # ist das direkte Aufrufen von finalize für ein Objekt, das keine Basisklasse ist, eine ungültige Operation. Der Finalisierungscode sollte minimal sein, ohne dass Aufrufe den aufrufenden Thread blockieren können. Da finalize von einem dedizierten Thread aufgerufen wird, sollte sein Code keinen lokalen Thread-Speicher oder eine Technik verwenden, die Thread-Affinität erfordert.
Die Verwendung von Finalize als Fallback-Mechanismus zum Freigeben von nicht verwaltetem Speicher oder Ressourcen ist wichtig, da Determinismus und Auswirkungen auf die GC-Leistung fehlen.