In C# gibt es den sogenannten “Garbage Collecor”, welcher ein Objekt, welches nicht mehr benötigt wird aus dem Speicher löscht. Dies geschieht völlig automatisiert. Allerdings will man vielleicht ein Objekt gar nicht automatisiert löschen lassen, sondern manuell sicherstellen, dass es gelöscht wird.
Dann kommt der sogenannte “Destructor” zum Einsatz. Dies ist eine Methode um ein nicht länger benötigtes Objekt aus den Ressourcen zu löschen. Wie auch bei dem “Constructor”, wird der Destructor mit dem Klassenname “gestartet”. Anders ist hier allerdings das vorangehende ~ Zeichen.
Die Methoden sehen also nicht viel anders aus, als herkömmliche. Hier ein kurzes Beispiel:
~Car() { Console.WriteLine("Out.."); }
Sobald das Objekt vom Garbage Collector gesammelt wird, wird diese Methode aufgerufen.
14 November, 2013 um 13:14
Hallo Pascal,
Wenns darum geht ein Objekt manuell zu löschen fehlt noch die Info wie man genau das tut. Der Destruktor arbeitet ja unabhängig davon ob das Objekt manuell oder automatisch gelöscht wurde.
Schöne Grüße, Robert
14 November, 2013 um 13:41
Hallo Robert,
vielen Dank! Das Objekt und alle daraufzeigenden Referenzen müssten manuell auf null gesetzt werden. Danach übernimmt dann der Garbage Collector das Löschen des Objektes.
MyObj obj1 = new MyObj();
obj1 = null;
Oder gibt es noch andere Möglichkeiten?
17 November, 2013 um 20:36
Keine Ahnung, ehrlich gesagt. Kenne C# nicht. Bei C++ konnte man das Objekt einfach löschen auch wenn noch Zeiger darauf gesetzt waren, aber ich denke das wird in C# aus Sicherheitsgründen nicht gehen, wie in Java.