| 

.NET C# Java Javascript Exception

3
Über
var p = new MyClass();

erzeuge ich ja unter C# ein Objekt. Aber wie werde ich das Objekt wieder los? Reicht es, wenn ich
p = null;

mache? Oder muss ich es noch irgendwie Removen?
News:
24.11.2011
Muralidharan.E 41 1 1 2
2 Antworten
5
Wie Jürgen schon geschrieben bzw. verlinkt hat: das Objekt wird automatisch (aber im allgemeinen irgendwann) vom Garbage Collector aufgeräumt, wenn es nicht mehr referenziert wird. In Deinem Beispiel würde das von alleine geschehen, wenn p aus dem Scope geht. Wenn Du ganz eifrig sein willst oder wenn p eine Membervariable ist, dann setzt Du p gleich null (oder auf irgendein anderes Objekt vom passenden Typ, das Du noch brauchst). Ebenso mit allen anderen Variablen, die das Objekt noch referenzieren. Pass insbesondere auf mit Event-Registrierungen: so lange eine solche besteht, referenziert der Event-Publisher den Event-Subscriber.

Sonst ist von Programmiererseite her nur dann noch etwas zu tun, wenn die Klasse des Objekts die Schnittstelle IDisposable implementiert. Dann solltest Du Dispose() aufrufen, sobald Du das Objekt nicht mehr brauchst, damit vom Objekt verwendete Ressourcen so früh als möglich freigegeben werden und nicht erst, wenn der Garbage Collector irgendwann mal in Aktion tritt. Am einfachsten (und hinsichtlich Exceptions auch am robustesten) geht das über ein using-Konstrukt:

using (var p = new MyClass())
{
//irgendwas mit p anstellen

} //beim Verlassen des Blocks wird automatisch p.Dispose() aufgerufen
24.11.2011
Matthias Hlawatsch 13,2k 4 9
1
Für das Aufräumen ist in dotnet der Garbage Collector zuständig. Siehe auch: Galileo Computing: 7.3 Objekte löschen
Zu null kann ich dir die MSDN empfehlen: null (C#-Referenz)
24.11.2011
Jürgen Luhr 7,1k 2 9

Stelle deine .net-Frage jetzt!