Option Strict-Anweisung

Schränkt die impliziten Datentypkonvertierungen auf ausschließlich Erweiterungskonvertierungen ein, lässt eine späte Bindung nicht zu und lässt keine implizite Typisierung zu, die einen Object-Typ ergibt.

Option Strict { On | Off }

Bestandteile

Ausdruck

Definition

On

Optional. Aktiviert die Option Strict-Überprüfung.

Off

Optional. Deaktiviert die Option Strict-Überprüfung. Wenn weder On noch Off angegeben ist, lautet der Standardwert Off.

Hinweise

Wenn Option Strict On oder Option Strict in einer Datei angezeigt wird, verursachen die folgenden Bedingungen einen Kompilierungsfehler:

  • Implizite Einschränkungskonvertierungen

  • Spätes Binden

  • Implizite Typisierung, die zu einem Object-Typ führt

Tipp

In den Warnungskonfigurationen, die Sie unter Seite "Kompilieren", Projekt-Designer (Visual Basic) festlegen können, gibt es drei Einstellungen, die den drei Bedingungen entsprechen, die einen Kompilierungsfehler verursachen. Informationen zum Verwenden dieser Einstellungen finden Sie unter So legen Sie Warnungskonfigurationen in der IDE fest weiter unten in diesem Thema.

Die Option Strict Off-Anweisung deaktiviert Fehler- und Warnungsüberprüfung für alle drei Bedingungen, selbst wenn die zugeordneten IDE-Einstellungen angeben, diese Fehler oder Warnungen zu aktivieren.

Bei Verwendung der Option Strict-Anweisung muss diese vor allen anderen Codeanweisungen in einer Datei angeordnet sein.

Wenn Sie Option Strict auf On festlegen, stellt Visual Basic eine Überprüfung zur Kompilierzeit bereit, die bei Folgendem behilflich ist:

  • Dadurch wird die IntelliSense-Unterstützung für die von Ihnen erstellten Variablen und Parameter aktiviert. Ihnen werden die Eigenschaften und andere Member bei der Eingabe im Code angezeigt.

  • Der Compiler damit kann eine Typüberprüfung durchführen. Mit der Typüberprüfung können Sie Anweisungen suchen, die aufgrund von Typkonvertierungsfehlern zur Laufzeit fehlschlagen können. Außerdem werden Aufrufe von Methoden für Objekte, die diese Methoden nicht unterstützen, angegeben.

Implizite Einschränkungskonvertierungsfehler

Implizite Einschränkungskonvertierungsfehler treten auf, wenn eine implizite Datentypkonvertierung vorliegt, die eine einschränkende Konvertierung ist.

Visual Basic kann viele Datentypen in andere Datentypen konvertieren. Ein Datenverlust kann auftreten, wenn der Wert eines Datentyps in einen Datentyp mit geringerer Genauigkeit oder kleinerer Kapazität konvertiert wird. Ein Laufzeitfehler tritt auf, wenn so eine einschränkende Konvertierung fehlschlägt. Option Strict stellt Kompilierzeitbenachrichtigung dieser einschränkenden Konvertierungen sicher, damit sie vermieden werden können. Weitere Informationen finden Sie unter Implizite und explizite Konvertierungen (Visual Basic) und Erweiternde und eingrenzende Konvertierungen (Visual Basic).

Zu Konvertierungen, die Fehler verursachen können, gehören implizite Konvertierungen in Ausdrücken. Weitere Informationen finden Sie unter den folgenden Themen:

Wenn Sie Zeichenfolgen verketten, indem Sie &-Operator (Visual Basic) verwenden, werden alle Konvertierungen in Zeichenfolgen als erweiternd betrachtet. Diese Konvertierungen generieren also keinen impliziten Einschränkungskonvertierungsfehler, auch wenn Option Strict aktiviert ist.

Wenn Sie eine Methode mit einem Argument aufrufen, bei dem sich der Datentyp vom entsprechenden Parameter unterscheidet, verursacht eine einschränkende Konvertierung einen Kompilierungsfehler, wenn Option Strict aktiviert ist. Sie können den Kompilierungsfehler vermeiden, indem Sie eine Erweiterungskonvertierung oder eine explizite Konvertierung verwenden.

Implizite Einschränkungskonvertierungsfehler werden zur Kompilierzeit für Konvertierungen von den Elementen in einer For Each…Next-Auflistung zur Schleifensteuerungsvariablen unterdrückt. Dies erfolgt auch, wenn Option Strict aktiviert ist. Weitere Informationen finden Sie im Abschnitt "Eingrenzende Konvertierungen" unter For Each...Next-Anweisung (Visual Basic).

Fehler für späte Bindung

Ein Objekt wird spät gebunden, wenn es einer Eigenschaft oder Methode einer Variablen zugeordnet wird, für die der Typ Object deklariert wurde. Weitere Informationen finden Sie unter Frühes und spätes Binden (Visual Basic).

Implizite Objekttypfehler

Implizite Objekttypfehler treten auf, wenn ein geeigneter Typ nicht für eine deklarierte Variable abgeleitet werden kann, sodass ein Typ von Object abgeleitet wird. Dies geschieht hauptsächlich, wenn Sie eine Dim-Anweisung verwenden, um eine Variable zu deklarieren, ohne eine As-Klausel zu verwenden, und wenn Option Infer deaktiviert ist. Weitere Informationen finden Sie unter Option Infer-Anweisung und Visual Basic-Sprachspezifikation.

Für Methodenparameter ist die As-Klausel optional, wenn Option Strict deaktiviert ist. Sobald jedoch ein Parameter eine As-Klausel verwendet, muss sie von allen Parametern verwendet werden. Wenn Option Strict aktiviert ist, ist die As-Klausel für jede Parameterdefinition erforderlich.

Wenn Sie eine Variable ohne Verwendung einer As-Klausel deklarieren und auf Nothing festlegen, ist die Variable vom Typ Object. Es tritt in diesem kein Kompilierungsfehler auf, wenn Option Strict aktiviert ist und Option Infer aktiviert ist. Ein Beispiel hierfür ist Dim something = Nothing.

Typen und Werte von Standarddaten

Die folgende Tabelle beschreibt die Ergebnisse der verschiedenen Kombinationen der Angabe von Datentyp und Initialisierung in einer Dim-Anweisung (Visual Basic).

Datentyp angegeben?

Initialisierung angegeben?

Beispiel

Ergebnis

nein

nein

Dim qty

Wenn Option Strict deaktiviert ist (Standard), wird die Variable auf Nothing festgelegt.

Wenn Option Strict aktiviert ist, tritt ein Kompilierungsfehler auf.

nein

Yes

Dim qty = 5

Wenn Option Infer aktiviert ist (Standard), hat die Variable den Datentyp der Initialisierung. Weitere Informationen finden Sie unter Lokaler Typrückschluss (Visual Basic).

Wenn Option Infer aus ist und Option Strict aus ist, nimmt die Variable den Datentyp von Object.

Wenn Option Infer deaktiviert ist und Option Strict aktiviert ist, tritt ein Kompilierungsfehler auf.

Yes

nein

Dim qty As Integer

Die Variable wird auf den Standardwert für den Datentyp initialisiert. Weitere Informationen finden Sie unter Dim-Anweisung (Visual Basic).

Yes

Yes

Dim qty As Integer = 5

Wenn der Datentyp der Initialisierung nicht in den angegebenen Datentyp konvertiert werden kann, tritt ein Kompilierungsfehler auf.

Wenn eine Option Strict-Anweisung nicht vorhanden ist

Wenn der Quellcode keine Option Strict-Anweisung enthält, wird die Einstellung Option strict auf der Seite "Kompilieren", Projekt-Designer (Visual Basic) verwendet. Seite Kompilieren enthält Einstellungen, die zusätzliche Kontrolle über die Bedingungen bereitstellen, die einen Fehler generieren.

Wenn Sie den Befehlszeilencompiler verwenden, können Sie die /optionstrict-Compileroption verwenden, um eine Einstellung für Option Strict anzugeben.

So legen Sie Option Strict in der IDE fest

Tipp

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

  1. Wählen Sie im Projektmappen-Explorer ein Projekt aus. Klicken Sie im Menü Projekt auf Eigenschaften. Weitere Informationen finden Sie unter Einführung in den Projekt-Designer.

  2. Legen Sie auf der Registerkarte Kompilieren den Wert im Feld Option Strict fest.

So legen Sie Warnungskonfigurationen in der IDE fest

Wenn Sie Seite "Kompilieren", Projekt-Designer (Visual Basic) anstelle einer Option Strict-Anweisung verwenden, haben Sie zusätzliche Kontrolle über die Bedingungen, die Fehler generieren. Der Abschnitt Warnungskonfigurationen auf der Seite Kompilieren verfügt über Einstellungen, die mit den drei Bedingungen übereinstimmen, die einen Kompilierungsfehler verursachen, wenn Option Strict aktiviert ist. Nachfolgend diese Einstellungen:

  • Implizite Konvertierung

  • Späte Bindung; Aufruf könnte zur Laufzeit einen Fehler verursachen

  • Impliziter Typ; Objekt angenommen

Wenn Sie Option Strict auf On festlegen, werden alle drei Warnungskonfigurationseinstellungen auf Fehler festgelegt. Wenn Sie Option Strict auf Off festlegen, werden alle drei Einstellungen auf Keine festgelegt.

Sie können jede Warnungskonfigurationseinstellung einzeln in Keine, Warnung oder Fehler ändern. Wenn alle drei Warnungskonfigurationseinstellungen auf Fehler festgelegt sind, wird On im Option strict-Feld angezeigt. Wenn alle drei auf Keine festgelegt sind, wird Off in diesem Feld angezeigt. Für jede andere Kombination dieser Einstellungen wird (benutzerdefiniert) 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 auf die Einstellung Option Strict im Dialogfeld Optionen festgelegt.

Klicken Sie im Menü Extras auf Optionen, um Option Strict im Dialogfeld festzulegen. Erweitern Sie im Dialogfeld Optionen die Option Projekte und Projektmappen, und klicken Sie dann auf VB-Standard. Die ursprüngliche Standardeinstellung in VB-Standard ist Off.

So legen Sie Option Strict in der Befehlszeile fest

Fügen Sie die /optionstrict-Compileroption in den vbc-Befehl ein.

Beispiel

In den folgenden Beispielen werden Kompilierungsfehler veranschaulicht, die durch implizite Typkonvertierungen verursacht werden, die einschränkende Konvertierungen sind. Diese Kategorie von Fehlern entspricht der Bedingung Implizite Konvertierung auf der Seite Kompilieren.

Im folgenden Beispiel wird ein Kompilierungsfehler veranschaulicht, der durch späte Bindung verursacht wurde. Diese Kategorie von Fehlern entspricht der Bedingung Späte Bindung; Aufruf könnte zur Laufzeit einen Fehler verursachen auf der Seite Kompilieren.

Die folgenden Beispiele veranschaulichen die Fehler, die durch Variablen verursacht werden, die mit einem impliziten Typ von Object deklariert werden. Diese Kategorie von Fehlern entspricht der Bedingung Impliziter Typ; Objekt angenommen auf der Seite Kompilieren.

Siehe auch

Aufgaben

Gewusst wie: Zugreifen auf Member eines Objekts (Visual Basic)

Späte Bindung in Office-Lösungen

Referenz

Seite "Kompilieren", Projekt-Designer (Visual Basic)

Option Explicit-Anweisung (Visual Basic)

Funktionen für die Typkonvertierung (Visual Basic)

/optionstrict

VB-Standard, Projekte, Dialogfeld "Optionen"

Konzepte

Erweiternde und eingrenzende Konvertierungen (Visual Basic)

Implizite und explizite Konvertierungen (Visual Basic)

Eingebettete Ausdrücke in XML (Visual Basic)

Gelockerte Delegatenkonvertierung (Visual Basic)

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

April 2011

Informationen zu den drei Arten von Option Strict-Fehlern und Beispiele wurden hinzugefügt.

Informationsergänzung.