Entwickler-Ecke

Basistechnologien - Gültigkeit von Objekten in Try-Block nach Exception


JackCoder - Fr 23.05.14 18:46
Titel: Gültigkeit von Objekten in Try-Block nach Exception
Hallo,
ich habe folgenden Code:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
...
try {

    object a = new Object();
    // Anweisugen...

catch {

    // Anweisungen...

}


Existiert das Objekt auch noch wenn eine Exception ausgelöst wird oder wird es automatisch gelöscht bzw. muss ich mich selber um die Lösung kümmern?
LG Jack


Th69 - Fr 23.05.14 19:23

Hallo,

eine Objektinstanz wird automatisch vom Garbage Collector (GC) gelöscht, sobald keine Referenz darauf mehr existiert, d.h. du mußt dich nicht darum kümmern.
Einzige Ausnahme sind bei Instanzen von Klassen, welche die IDisposable-Schnittstelle bereitstellen, dann muß man dafür Dispose() aufrufen (bzw. man kann das mittels einer using(var x = new X())-Anweisung umgehen).

In deinem Fall würde also bei Blockende keine Referenz mehr für das erzeugte Objekt existieren, und der GC würde es bei Bedarf dann freigeben.


JackCoder - Fr 23.05.14 19:25

Danke für deine Antwort!


Ralf Jansen - Fr 23.05.14 19:29

Als Ergänzung zu deinem Exception Fall. catch und try sind 2 Codeblöcke. a existiert also schon nicht mehr im catch Block und kann dort auch nicht referenziert werden.