So bereinigen Sie die nicht verwalteten Ressourcen in C # [Duplikat]

Jan 20 2021

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 heremöchte ich das aObjekt zerstören oder entsorgen und sein zugewiesenes Gedächtnis freigeben.

Antworten

1 ispiro Jan 20 2021 at 03:55

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 ain Ihrem Beispiel den Gültigkeitsbereich überschritten haben , und gibt den von ihnen verwendeten Speicherplatz frei. Es wird dann afestgestellt, 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 Disposees am besten, Disposeexplizit aufzurufen oder usingBlöcke zu verwenden, um dies zu erreichen. Sie können auch einen Finalizer implementieren, der ausgeführt wird, wenn er aentsorgt wird. Aber anscheinend haben Sie nicht danach gefragt.