Wie funktionieren die Methoden "New" und "Finalize" in einer Klassenhierarchie?

Aktualisiert: November 2007

Wenn eine Instanz einer Klasse erstellt wird, versucht die Common Language Runtime (CLR) eine Prozedur mit dem Namen New auszuführen, falls diese in dem Objekt vorhanden ist. New ist eine Prozedur vom Typ constructor, mit der neue Objekte initialisiert werden, bevor anderer Code in einem Objekt ausgeführt wird. Ein New-Konstruktor kann zum Öffnen von Dateien, Verbinden mit Datenbanken, Initialisieren von Variablen sowie für andere Aufgaben verwendet werden, die ausgeführt werden müssen, bevor ein Objekt verwendet werden kann.

Wenn eine Instanz einer abgeleiteten Klasse erstellt wird, werden zuerst der Sub New-Konstruktor der Basisklasse und anschließend die Konstruktoren in den abgeleiteten Klassen ausgeführt. Dies geschieht, da die erste Codezeile in einem Sub New-Konstruktor die Syntax MyBase.New() verwendet, um den Konstruktor der Klasse aufzurufen, die sich in der Klassenhierarchie unmittelbar darüber befindet. Der Sub New-Konstruktor wird dann für jede Klasse in der Klassenhierarchie aufgerufen, bis der Konstruktor für die Basisklasse erreicht wird. Zu diesem Zeitpunkt wird der Code im Konstruktor für die Basisklasse, gefolgt vom Code in jedem Konstruktor in allen abgeleiteten Klassen, ausgeführt. Der Code in den am stärksten abgeleiteten Klassen wird zuletzt ausgeführt.

Wenn ein Objekt nicht mehr benötigt wird, ruft die CLR die Finalize-Methode für dieses Objekt auf, bevor der Speicher freigegeben wird. Die Finalize-Methode wird als destructor bezeichnet, da sie Bereinigungsaufgaben ausführt wie das Speichern von Zustandsinformationen, Schließen von Dateien und Verbinden mit Datenbanken sowie andere Aufgaben, die vor der Freigabe eines Objekts ausgeführt werden müssen.

Siehe auch

Konzepte

Objektlebensdauer: Erstellen und Zerstören von Objekten