2.25 Müssen Objektvariablen auf Nothing gesetzt werden?
VB4-VB6
Von: Thorsten Dörfler
Nein. VB-Entwickler haben es aber zu einem besonderen Sport gemacht, ausgerechnet Objektvariablen zum Ende einer Prozedur auf Nothing
zu setzen, um damit "aufzuräumen". Bei so viel Gründlichkeit müsste man in letzter Konsequenz alle Variablen auf ihre Initialwerte zurücksetzen, also numerische Datentypen auf "0", Zeichenfolgen auf "vbNullString". Aber auf die Idee kommt man im Normalfall nicht.
VB kümmert sich im Hintergrund automatisch darum, dass Objekte terminiert werden und Speicher freigegeben wird. Man kann mit einem expliziten Nothing setzen, nichts beschleunigen, was nicht ohnehin automatisch passiert.
Es ist ein weit verbreiteter Irrtum, dass mit der Zuweisung von "Nothing" eine Objektinstanz explizit zerstört würde. Alleine die Referenz wird aufgelöst, so dass der interne COM Referenzzähler einen Verweis abzieht. Erst wenn dieser den Wert "0" annimmt, zerstört COM die Objektinstanz.
Aber keine Regel ohne Ausnahme: Wenn man eine zirkuläre Referenz erzeugt hat, also das Kind-Objekt das Eltern-Objekt referenziert, muss man die Referenz auf das Eltern-Objekt durch ein explizites Nothing setzen auflösen, da hier sonst der automatische Mechanismus von COM außer Betrieb gesetzt wird.