Frage

Wenn ich bekam

Dim myRect As Rectangle = New Rectangle(0,0,100,100)

Ist es notwendig oder nur fein um später zu tun:

myRect = Nothing

Oder ist es nicht notwendig? Vielen Dank.

WENN Es ist notwendig, gibt es andere Fälle, die es nicht für meine Variablen ist?

War es hilfreich?

Lösung

Im Allgemeinen als Sagte Joel, Es ist unnötig.

In Ihrem spezifischen Beispiel ist es jedoch tatsächlich zwecklos. Rectangle ist ein Werttyp, so einstellen es auf Nothing ist nicht eben Beeinflussung der Referenzzahl eines Objekts; Es weist eine neue zu Wert (Der Standardwert für Rectangle) zu deinem myRect Variable. Dies ist analog zu einem Integer variabel und einstellen auf 0 am Ende einer Methode. Kauft dir nichts.


Ich sollte darauf hinweisen, dass die Behauptung "eine Variable auf festgelegt wird Nothing oder null In C#] ist nie etwas zu erreichen. "* ist ein Mythos. Es ist durchaus möglich, dass Sie eine haben können aufstellen in einer Klasse, auf die Sie genauso gut einstellen könnten null Wenn das verwiesene Objekt nicht mehr benötigt wird, haben Sie jedoch immer noch einen Verweis auf die Klasseninstanz selbst.

Angenommen, Sie hatten eine Containerklasse, die a T[] Array, und Sie geben diesem Behälter einen Empty Methode. Es könnte sinnvoll sein, das interne Array des Containers aufzustellen null In dieser Methode, die zu null Hinweisen auf das Array -Objekt führen würde und es für die Müllsammlung qualifiziert. (Sie würden dann ein Neuarray erstellen, wenn der externe Code als nächstes versuchte, a hinzuzufügen T zur Sammlung.) Wenn Sie das Feld nicht auf Null gesetzt haben Empty, Dann würde es immer noch einen Hinweis auf das Array (dh das Feld) geben, und so wäre das eine kleine Menge an Speicher, die Sie wirklich nicht benötigen.

Wie ich schon sagte, das ist ein simpeltes Beispiel. Und ehrlich gesagt ist es selten, dass Sie jemals solche Szenarien in Betracht ziehen müssen. Ich dachte nur, ich würde es erwähnen, damit Sie nicht den falschen Eindruck haben, dass ein Einstellen a aufstellen zu Nothing buchstäblich nie etwas erreicht.

*Ich zitiere hier niemanden, der hier spezifisch ist. Dies ist nur eine über Generalisierung, die ich mehr als einmal gehört habe.

Andere Tipps

Tu es nicht. Dies war in den VB6 -Tagen wichtig, aber für .NET ist es möglich (wenn auch sehr unwahrscheinlich), dass es den Müllsammler tatsächlich ausschaltet und andere unerwartete Nebenwirkungen hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top