Implizite und explizite Deklaration (Visual Basic)
Standardmäßig erzwingt der Visual Basic-Compiler die explizite Deklaration, die das Deklarieren von Variablen vor ihrer Verwendung erfordert. Sie können diese Anforderung entfernen und die implizite Deklaration zulassen.
In Visual Basic steht ein Schalter zur Verfügung, über den Sie die explizite Deklaration steuern können. Standardmäßig ist dieser Schalter auf On eingestellt, d. h. der Compiler erzwingt die explizite Deklaration. Wenn Sie diesen Schalter auf Off setzen, können Sie Variablen verwenden, ohne sie zu deklarieren.
Expliziter Deklarationsschalter. Sie können die explizite Deklaration wie folgt auf On oder Off festlegen:
Legen Sie in der integrierten Entwicklungsumgebung (IDE) die entsprechende Projekteigenschaft fest. Klicken Sie im Menü Projekt auf die Option <Projektname> Eigenschaften, und wählen Sie dort die Registerkarte Kompilieren aus. Sie können die Standardwerte für Option Explicit, Option Strict und Option Compare festlegen.
Geben Sie die /optionexplicit-Befehlszeilen-Compileroption an.
Fügen Sie am Anfang des Codes die Option Explicit-Anweisung (Visual Basic) ein.
Wenn Sie die Option Explicit-Anweisung verwenden, überschreibt diese Einstellung sowohl die eingestellte Projekteigenschaft als auch die Compileroptionen. Dies gilt jedoch nur für die Quellcodedatei, in der die Anweisung vorhanden ist.
Leistungsvorteil. Wenn Sie Option Explicit auf On setzen, hat dies den Vorteil, dass die Typherleitung zur Kompilierungszeit durchgeführt wird und nicht zur Laufzeit. Dies führt zu einer Leistungssteigerung.
Implizite Deklaration
Wenn Sie Option Explicit auf Off setzen, können Sie eine Variable implizit deklarieren, indem Sie sie einfach im Code verwenden. Der Compiler weist allen implizit deklarierten Variablen den Object-Datentyp zu. Die Anwendung ist jedoch effizienter, wenn Sie alle Variablen explizit deklarieren und einen bestimmten Datentyp für sie festlegen. Dadurch verringern Sie die Wahrscheinlichkeit des Auftretens von Fehlern aufgrund von Namenskonflikten sowie Rechtschreibfehler. Darüber hinaus können vom Compiler potenzielle Laufzeitfehler, z. B. das Zuweisen von Integer zu Short, festgestellt werden.
Potenzielle Fehler
Unbeabsichtigte neue Variablen
Sie können eine Prozedur schreiben, in der Sie keine lokale Variable deklarieren. Dies wird anhand des folgenden Beispiels veranschaulicht:
Function safeSqrt(num)
' Make sure num is positive for square root.
tempVal = Math.Abs(num)
Return Math.Sqrt(tempVal)
End Function
Visual Basic erstellt automatisch tempVal als lokale Variable, die Sie so verwenden können, als hätten Sie sie explizit deklariert. Dies ist zwar bequem, kann jedoch auch kleinere Fehler im Code verursachen, wenn Sie z. B. den Namen einer Variablen falsch schreiben. Angenommen, Sie hätten die Prozedur im vorigen Beispiel wie folgt eingegeben:
Function safeSqrt(num)
' Make sure num is positive for square root.
tempVal = Math.Abs(num)
Return Math.Sqrt(temVal)
End Function
Auf den ersten Blick sehen beide Codebeispiele identisch aus. Da jedoch die tempVal-Variable als Argument für Sqrt falsch geschrieben ist, erstellt der Compiler eine zusätzliche lokale Variable mit der Bezeichnung temVal, der nie ein Wert zugewiesen wird, wodurch die Funktion immer 0 (null) zurückgibt.
Unbeabsichtigter Verweis auf vorhandene Elemente
Wenn Visual Basic einen neuen Namen findet, ist es nicht möglich festzustellen, ob Sie beabsichtigten, eine neue Variable implizit zu deklarieren, oder ob Sie den Namen einer bereits vorhandenen Variablen falsch geschrieben haben. Deshalb wird versucht, eine neue Variable mit diesem Namen zu erstellen. Eventuell ist bereits eine Variable oder ein anderes Programmierelement mit diesem Namen definiert. In diesem Fall würde diese Definition ungewollt im Code verwendet werden.
Probleme mit falsch geschriebenen Variablen können Sie vermeiden, indem Sie die explizite Deklaration verwenden.
Explizite Deklaration
Wenn für die Quelldatei mit der safeSqrt-Prozedur aus dem vorangegangenen Beispiel die explizite Deklaration aktiviert gewesen wäre, hätte Visual Basic die Variablen tempVal und temVal als undeklariert erkannt und in beiden Fällen einen Fehler ausgegeben. Anschließend würden Sie tempVal explizit deklarieren. Dies wird anhand des folgenden Beispiels veranschaulicht:
Function safeSqrt(ByVal num As Double) As Double
' Make sure num is positive for square root.
Dim tempVal As Double = Math.Abs(num)
Return Math.Sqrt(temVal)
End Function
Mit dem überarbeiteten Code fällt Ihnen der Irrtum sofort auf, da Visual Basic für die falsch geschriebene Variable temVal eine Fehlermeldung ausgibt. Da sich Fehler dieser Art mit der expliziten Deklaration leicht feststellen lassen, sollten Sie diese für den gesamten Code verwenden.
Tipp
Die Option Explicit-Anweisung arbeitet dateiweise. Sie muss am Beginn jeder Quellcodedatei stehen, in der Sie das Erzwingen der expliziten Variablendeklaration steuern möchten.
Siehe auch
Aufgaben
Gewusst wie: Ändern von Projekteigenschaften und Konfigurationseinstellungen
Referenz
Datentyp: Zusammenfassung (Visual Basic)
Funktionen für die Typkonvertierung (Visual Basic)
Konzepte
Typenloses Programmieren in Visual Basic
Typüberprüfung in Visual Basic
Object als universeller Datentyp (Visual Basic)