2010-04-28 6 views

Antwort

2

in .NET die Garbage Collector wird es für Sie tun! Aber es kann tatsächlich davon abhängen, was Sie meinen, wenn Sie schreiben, dass Sie Ihre Variable nicht mehr brauchen

11

Sie nicht. Lassen Sie die Referenz den Gültigkeitsbereich verlassen und wird automatisch garbage-collected.

1

.NET verfügt über einen integrierten Speicherbereiniger. Es reicht aus, auf das Array oder die Variable zu verweisen, wenn Sie sie nicht benötigen. Ein expliziter Aufruf zum Zerstören ist nicht erforderlich.

5

In .Net oder jede Müll gesammelt Sprache für diese Angelegenheit lösen Sie einfach alle Verweise Sie auf das Objekt halten, und der Garbage Collector wird es Ex schließlich sammeln:

int[] arr = new int[20]; 
    .... 
    // when no longer needed set all references to null 
    arr = null; 
    // also creating a new object will release the old one automatically if there are no more references to it 
    arr = new int[40]; // old array will be garbage collected 

Beachten Sie auch, dass Sie dies nicht tun Sie müssen dies jedes Mal tun, wenn Sie ein Objekt explizit freigeben möchten, ohne das übergeordnete Objekt des Objekts freizugeben, oder wenn es sich bei dem Verweis um ein statisches Feld handelt. Auch das Freigeben von Objekten ist nicht für lokale (Methoden-) Variablenfelder von Klassen oder statischen Feldern erforderlich.

+0

vielen Dank! – Alexry

+2

Beachten Sie, dass Sie die Referenz auch nicht auf "null" setzen müssen - die JIT/Runtime wird herausfinden, an welcher Stelle der Code diese Referenz nicht mehr verwenden wird; es ist tot und sammelbar an diesem Punkt. Google für 'GC.KeepAlive()' Beschreibungen in MSDN Blogs und hier auf SO für Details. –

+1

@Alexry, Ihre Begrüßung, auch wie @Michael Burr sagte, es ist * äußerst selten * in .Net, eine Variable manuell auf Null zu setzen, müssen Sie normalerweise nicht tun. –

1

Garbage-Collector ist fantastisch, aber das Objekt wird effektiv zerstört, wenn der Garbage-Collector die nicht mehr referenzierten Objekte sammelt: später ... Also wenn das Objekt sofort entsorgt werden muss, damit der Destruct-Code aufgerufen wird Sie implementieren die IDisposable-Schnittstelle und rufen die Dispose-Methode auf, bevor Sie Ihr Objekt dereferenzieren.

Verwandte Themen