Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Beschränkt implizite Datentypkonvertierungen auf die Erweiterung von Konvertierungen, verbietet verspätete Bindung und verbietet implizite Eingaben, die zu einem Object
Typ führen.
Syntax
Option Strict { On | Off }
Bestandteile
Begriff | Definition |
---|---|
On |
Wahlfrei. Aktiviert Option Strict die Überprüfung. |
Off |
Wahlfrei. Deaktiviert die Option Strict Überprüfung. |
Bemerkungen
Wenn Option Strict On
oder Option Strict
in einer Datei angezeigt wird, führen die folgenden Bedingungen zu einem Kompilierungsfehler:
Implizite Verengungskonvertierungen
Verspätete Bindung
Implizite Eingabe, die zu einem
Object
Typ führt
Hinweis
In den Warnungskonfigurationen, die Sie auf der Kompilierungsseite festlegen können, gibt es drei Einstellungen, die den drei Bedingungen entsprechen, die einen Kompilierzeitfehler verursachen. Informationen zur Verwendung dieser Einstellungen finden Sie unter "So legen Sie Warnungskonfigurationen in der IDE weiter unten in diesem Thema fest.
Die Option Strict Off
Anweisung deaktiviert die Fehler- und Warnüberprüfung auf alle drei Bedingungen, auch wenn die zugehörigen IDE-Einstellungen angeben, dass diese Fehler oder Warnungen aktiviert werden sollen. Die Option Strict On
Anweisung aktiviert die Fehler- und Warnüberprüfung auf alle drei Bedingungen, auch wenn die zugehörigen IDE-Einstellungen angeben, dass diese Fehler oder Warnungen deaktiviert werden sollen.
Bei Verwendung muss die Option Strict
Anweisung vor anderen Codeanweisungen in einer Datei angezeigt werden.
Wenn Sie auf <
Sie ermöglicht die IntelliSense-Unterstützung für Ihre Variablen und Parameter. Auf diese Weise können Sie deren Eigenschaften und andere Member während der Eingabe von Code anzeigen.
Er ermöglicht es dem Compiler, die Typüberprüfung durchzuführen. Die Typüberprüfung hilft Ihnen beim Auffinden von Anweisungen, die zur Laufzeit aufgrund von Typkonvertierungsfehlern fehlschlagen können. Außerdem werden Aufrufe von Methoden für Objekte identifiziert, die diese Methoden nicht unterstützen.
Sie beschleunigt die Ausführung von Code. Ein Grund hierfür ist, dass der Visual Basic-Compiler ihm den
Object
Typ zuweist, wenn Sie keinen Datentyp für ein Programmierelement angeben. Kompilierter Code muss möglicherweise zwischenObject
und anderen Datentypen konvertiert werden, wodurch die Leistung reduziert wird.
Implizite Verengungsfehler
Implizite Verengungsfehler treten auf, wenn eine implizite Datentypkonvertierung vorliegt, bei der es sich um eine schmale Konvertierung handelt.
Visual Basic kann viele Datentypen in andere Datentypen konvertieren. Datenverlust kann auftreten, wenn der Wert eines Datentyps in einen Datentyp konvertiert wird, der weniger Genauigkeit oder eine kleinere Kapazität aufweist. Wenn eine solche Schmalungskonvertierung fehlschlägt, tritt ein Laufzeitfehler auf.
Option Strict
stellt die Kompilierungszeitbenachrichtigung über diese schmalen Konvertierungen sicher, damit Sie sie vermeiden können. Weitere Informationen finden Sie unter Implizite und explizite Konvertierungen und Verbreiterung und Verengung von Konvertierungen.
Konvertierungen, die Fehler verursachen können, umfassen implizite Konvertierungen, die in Ausdrücken auftreten. Weitere Informationen finden Sie in den folgenden Themen:
Wenn Sie Zeichenfolgen mithilfe des &-Operators verketten, werden alle Konvertierungen in die Zeichenfolgen als Verbreiterung betrachtet. Daher generieren diese Konvertierungen keinen impliziten Verengungsfehler, auch wenn Option Strict
dies aktiviert ist.
Wenn Sie eine Methode aufrufen, die ein Argument enthält, das einen anderen Datentyp als der entsprechende Parameter aufweist, führt eine schmale Konvertierung zu einem Kompilierungszeitfehler, falls Option Strict
vorhanden. Sie können den Kompilierungszeitfehler vermeiden, indem Sie eine Erweiterungskonvertierung oder eine explizite Konvertierung verwenden.
Implizite Verengungsfehler werden zur Kompilierungszeit für Konvertierungen aus den Elementen in einer For Each…Next
Auflistung in die Loop-Steuerelementvariable unterdrückt. Dies tritt auch dann auf, wenn Option Strict
sie aktiviert ist. Weitere Informationen finden Sie im Abschnitt "Verengung von Konvertierungen" in For Each... Next-Anweisung.
Verspätete Bindungsfehler
Ein Objekt ist spät gebunden, wenn es einer Eigenschaft oder Methode einer Variablen zugewiesen wird, die als Typ Object
deklariert ist. Weitere Informationen finden Sie unter Early and Late Binding.
Implizite Objekttypfehler
Implizite Objekttypfehler treten auf, wenn ein entsprechender Typ für eine deklarierte Variable nicht abgeleitet werden kann, sodass ein Typ von Object
abgeleitet wird. Dies tritt in erster Linie auf, wenn Sie eine Dim
-Anweisung verwenden, um eine Variable zu deklarieren, ohne eine As
-Klausel zu verwenden, und Option Infer
deaktiviert ist. Weitere Informationen finden Sie unter Option Infer Statement und visual Basic Language Specification.
Bei Methodenparametern ist die As
Klausel optional, wenn Option Strict
sie deaktiviert ist. Wenn jedoch ein Parameter eine As
Klausel verwendet, muss er alle verwendet werden. Falls Option Strict
aktiviert, ist die As
Klausel für jede Parameterdefinition erforderlich.
Wenn Sie eine Variable ohne Verwendung einer As
Klausel deklarieren und auf Nothing
diese festlegen, hat die Variable einen Typ von Object
. In diesem Fall tritt kein Kompilierungsfehler auf und Option Strict
Option Infer
ist aktiviert. Ein Beispiel hierfür ist Dim something = Nothing
.
Standarddatentypen und -werte
In der folgenden Tabelle werden die Ergebnisse verschiedener Kombinationen zum Angeben des Datentyps und des Initialisierungsprogramms in einer Dim-Anweisung beschrieben.
Der angegebene Datentyp? | Initialisierer angegeben? | Beispiel | Ergebnis |
---|---|---|---|
Nein | Nein | Dim qty |
Wenn Option Strict sie deaktiviert ist (Standardeinstellung), wird die Variable auf Nothing .Falls Option Strict aktiviert, tritt ein Kompilierungszeitfehler auf. |
Nein | Ja | Dim qty = 5 |
Wenn Option Infer dies der Standardwert ist, verwendet die Variable den Datentyp des Initialisierers. Siehe "Lokale Typinference".Wenn Option Infer deaktiviert und Option Strict deaktiviert ist, übernimmt die Variable den Datentyp von Object .Wenn Option Infer deaktiviert und Option Strict aktiviert ist, tritt ein Kompilierungszeitfehler auf. |
Ja | Nein | Dim qty As Integer |
Die Variable wird auf den Standardwert für den Datentyp initialisiert. Weitere Informationen finden Sie unter Dim-Anweisung. |
Ja | Ja | Dim qty As Integer = 5 |
Wenn der Datentyp des Initialisierers nicht in den angegebenen Datentyp konvertierbar ist, tritt ein Kompilierungszeitfehler auf. |
Wenn eine Option Strict-Anweisung nicht vorhanden ist
Wenn der Quellcode keine Anweisung enthält Option Strict
, wird die Einstellung Option strict auf der Kompilierungsseite, Project Designer (Visual Basic) verwendet. Die Kompilierungsseite verfügt über Einstellungen, die zusätzliche Kontrolle über die Bedingungen bieten, die einen Fehler generieren.
Wenn Sie den Befehlszeilencompiler verwenden, können Sie die Compileroption -optionstrict verwenden, um eine Einstellung für Option Strict
anzugeben.
So legen Sie option Strict in der IDE fest
Hinweis
Auf Ihrem Computer werden möglicherweise unterschiedliche Namen oder Speicherorte für einige der Visual Studio-Benutzeroberflächenelemente in den folgenden Anweisungen angezeigt. Die Visual Studio-Edition, über die Sie verfügen, und die Einstellungen, die Sie verwenden, bestimmen diese Elemente. Weitere Informationen finden Sie unter Personalisierung der IDE.
Wählen Sie im Projektmappen-Explorerein Projekt aus. Klicken Sie im Menü Projekt auf Eigenschaften.
Legen Sie auf der Registerkarte " Kompilieren " den Wert im Feld "Option Streng " fest.
So legen Sie Warnungskonfigurationen in der IDE fest
Wenn Sie die Kompilierungsseite, Project Designer (Visual Basic) anstelle einer Option Strict
Anweisung verwenden, haben Sie zusätzliche Kontrolle über die Bedingungen, die Fehler generieren. Der Abschnitt "Warnungskonfigurationen" der Kompilierungsseite enthält Einstellungen, die den drei Bedingungen entsprechen, die einen Kompilierungszeitfehler verursachen, wenn Option Strict
der Vorgang aktiviert ist. Im Folgenden sind die folgenden Einstellungen aufgeführt:
implizite Konvertierung
verspätete Bindung; Der Aufruf kann zur Laufzeit fehlschlagen
Impliziter Typ; objekt angenommen
Wenn Sie Option Strict auf Onfestlegen, werden alle drei dieser Warnungskonfigurationseinstellungen auf Fehler-festgelegt. Wenn Sie Option Strict auf Offfestlegen, werden alle drei Einstellungen auf Nonefestgelegt.
Sie können jede Warnungskonfigurationseinstellung einzeln in Keine, Warnungoder Fehler-ändern. Wenn alle drei Warnungskonfigurationseinstellungen auf Fehler-festgelegt sind, wird On
im Feld Option strict
angezeigt. Wenn alle drei auf Keinefestgelegt sind, wird in diesem Feld Off
angezeigt. Bei einer anderen Kombination dieser Einstellungen wird (benutzerdefinierte) angezeigt.
So legen Sie die Option Strict-Standardeinstellung für neue Projekte fest
Wenn Sie ein Projekt erstellen, wird die Einstellung "Option Strict" auf der Registerkarte "Kompilieren" im Dialogfeld "Optionen" auf die Einstellung "Option Strict" festgelegt.
Zum Festlegen Option Strict
in diesem Dialogfeld klicken Sie im Menü "Extras " auf "Optionen". Erweitern Sie im Dialogfeld OptionenProjekte und Lösungen, und klicken Sie dann auf VB-Standardwerte. Die anfängliche Standardeinstellung in VB-Standardwerten lautet Off
.
So legen Sie Option Strict in der Befehlszeile fest
Fügen Sie die Compileroption "-optionstrict " in den vbc-Befehl ein.
Beispiel 1
Die folgenden Beispiele veranschaulichen Kompilierungszeitfehler, die durch implizite Typkonvertierungen verursacht werden, die Konvertierungen einschränken. Diese Fehlerkategorie entspricht der impliziten Konvertierungsbedingung auf der Kompilierungsseite.
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim cyclists As Long = 5
Dim bicycles As Integer = cyclists
'Dim bicycles As Integer = CType(cyclists, Integer)
'Dim bicycles As Integer = CInt(cyclists)
'Dim bicycles As Integer = Convert.ToInt32(cyclists)
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim charVal As Char = "a"
'Dim charVal As Char = "a"c
'Dim charVal As Char = CType("a", Char)
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the string is implicitly converted
' to a Double, and then is added to the other number.
Dim myAge As Integer = "34" + 6
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the floating-point number
' is implicitly converted to a Long.
Dim num = 123.45 \ 10
Beispiel 2
Im folgenden Beispiel wird ein Kompilierungszeitfehler veranschaulicht, der durch verspätete Bindung verursacht wird. Diese Fehlerkategorie entspricht der verspäteten Bindung. Der Aufruf kann zur Laufzeitbedingung auf der Kompilierungsseite fehlschlagen.
' If Option Strict is on, this late binding
' causes a compile-time error. If Option Strict
' is off, the late binding instead causes a
' run-time error.
Dim punchCard As New Object
punchCard.Column = 5
Beispiel 3
Die folgenden Beispiele veranschaulichen Fehler, die durch Variablen verursacht werden, die mit einem impliziten Typ von Object
. Diese Fehlerkategorie entspricht dem impliziten Typ; Objekt wird auf der Kompilierungsseite angenommen.
' If Option Strict is on and Option Infer is off,
' this Dim statement without an As clause
' causes a compile-time error.
Dim cardReaders = 5
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the variable is set to Nothing.
Dim dryWall
' If Option Strict is on, this parameter without an
' As clause causes a compile-time error.
Private Sub DetectIntergalacticRange(ByVal photonAttenuation)
End Sub
Siehe auch
- Erweiternde und eingrenzende Konvertierungen
- Implizite und explizite Konvertierungen
- Kompilierungsseite, Project Designer (Visual Basic)
- Option Explicit-Anweisung
- Typkonvertierungsfunktionen
- Vorgehensweise: Zugreifen auf Elemente eines Objekts
- Eingebettete Ausdrücke in XML
- Gelockerte Delegatenkonvertierung
- Späte Bindung in Office-Lösungen
- -optionstrict
- Visual Basic-Standardwerte, Projekte, Dialogfeld "Optionen"