2012-04-09 14 views

Antwort

3

zu null Zuordnung ist in der Regel nicht hilfreich (vor allem dann nützlich, wenn Sie ein Feld auf einem Objekt veröffentlichen, die viel länger leben) - es ist sicherlich nicht Sammlung erzwingen. Dispose() steht in keinem Zusammenhang mit der Sammlung und ist für den Fall gedacht, dass Sie dies benötigen. Wenn Sie keine Ressourcen haben, die die Eingabeaufforderung Dispose() (nicht verwaltete Ressourcen, Verbindungen usw.) benötigen, ist die Implementierung von IDisposable nicht erforderlich.

Lassen Sie den GC allein - es wird effizient sammeln, wenn es wählt, die auf "normalen" .NET bedeutet ein Generationenschema; kurzlebige Objekte sind sehr effizient zu sammeln.

0

Wenn ein Objekt Ihre eigene Klasse ist und Sie einen Dispose-Mechanismus darin platzieren und es entsorgen, anstatt ihm einen Nullwert zuzuweisen, ist dies besser, da Sie dadurch mehr Kontrolle über Speicher und Leistung erhalten.

Objekte explizit zu zerstören ist keine schlechte Übung. Der GC führt solche Dinge für uns aus, aber das System muss warten, bis das Objekt außerhalb des Geltungsbereichs ist und wann es für die Garbage Collection bereit ist. Dies kann einige Zeit dauern, daher ist es eine gute Praxis, Objekte zu entsorgen, die in einem nutzlosen Zustand sind.

+3

Wenn es nichts zu entsorgen gibt, was für eine gute Implementierung 'IDisposable'? –

+0

"Explizit" Objekte explizit zu zerstören ** ist nicht möglich ** in .NET, daher ist es nicht möglich zu diskutieren, ob es gut oder schlecht ist. Hier kann es einige Vorteile geben (beim Umgang mit nicht verwalteten Ressourcen usw.), aber es bezieht sich auf einige sehr spezifische Szenarien, die ** nicht ** klingen, wie das, was das OP beschreibt. –

Verwandte Themen