So bereinigen Sie die nicht verwalteten Ressourcen in C # [Duplikat]
Ich habe diese Klasse:
public class A
{
//Some logic code here
}
Meine Frage ist, wie ich ein Objekt, das basierend auf dieser Klasse erstellt wurde, entsorgen oder zerstören kann, nachdem ich den Gültigkeitsbereich verlassen habe.
Beispielsweise:
A a = new A();
//some code here
Nach dem //some code here
möchte ich das a
Objekt zerstören oder entsorgen und sein zugewiesenes Gedächtnis freigeben.
Antworten
Ich werde den Titel ignorieren und mich auf den Hauptteil der Frage konzentrieren, da sich aus der Frage ergibt, um was es sich handelt.
Die kurze Antwort: Sie nicht. Dies wird vom Garbage Collector automatisch erledigt, wenn er dies für erforderlich hält. (Sie müssen den Garbage Collector nicht ausführen. Dies geschieht automatisch.)
Der Garbage Collector sucht dann nach Entitäten, die wie a
in Ihrem Beispiel den Gültigkeitsbereich überschritten haben , und gibt den von ihnen verwendeten Speicherplatz frei. Es wird dann a
festgestellt, dass die Interna von offensichtlich auch außerhalb des Gültigkeitsbereichs liegen (es sei denn, sie werden an anderer Stelle in Ihrem Code referenziert), und sie behandeln.
Wenn Sie jedoch Variablen von Klassen verwenden, die implementieren, ist Dispose
es am besten, Dispose
explizit aufzurufen oder using
Blöcke zu verwenden, um dies zu erreichen. Sie können auch einen Finalizer implementieren, der ausgeführt wird, wenn er a
entsorgt wird. Aber anscheinend haben Sie nicht danach gefragt.