Autor Beitrag
Felix2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Mo 22.08.11 08:46 
Hi Folks !

Ich habe mal eine Frage. Wenn ich in C Sharp ein Objekt erstelle, kann ich dieses eigentlich wie in der Sprache C++ möglich, explizit durch meinen eigenen Code löschen, oder ist es genauso wie in Java (wo das die Virtual Machine für mich übernimmt), dass das die JTS für mich übernimmt ich selbst auf die Löschung von Objekten im Arbeitsspeicher keinen Einfluß habe?

Greetz
Felix
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: Mo 22.08.11 09:44 
Hallo Felix,

C# (bzw. .NET) läuft ebenso wie Java in einer "managed"-Umgebung, d.h. das System merkt sich selbständig die Referenzen auf die Objekte und löscht sie über den Garbage Collector (GC) bei Bedarf.
Bei Klassen, welche auf externe Ressourcen zugreifen, ist die IDisposable-Schnittstelle implementiert, d.h. man kann über die Dispose()-Methode veranlassen, daß das Objekt die externen Ressourcen (z.B. File-Handle) schließt.
Als Kurzform gibt es daher in der Sprache C# die "using"-Anweisung, z.B.:
ausblenden C#-Quelltext
1:
2:
3:
4:
using (FileStream fs = new FileStream(...))
{

}

Am Ende des Blocks wird dann (in diesem Fall) die Datei wieder geschlossen und dann kann auch der GC (bei seinem nächsten internen Aufruf) dieses FileStream-Objekt löschen.