Entwickler-Ecke

C# - Die Sprache - Frage zu Objekten in C Sharp


Felix2000 - Mo 22.08.11 08:46
Titel: Frage zu Objekten in C Sharp
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 - 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.:

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.