Autor Beitrag
JackCoder
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 23.05.14 18:46 
Hallo,
ich habe folgenden Code:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 23.05.14 19:25 
Danke für deine Antwort!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.