Option Strict StatementOption Strict Statement

Schränkt implizite Datentyp Konvertierungen auf erweiternde Konvertierungen ein, lässt spätes Binden nicht zu und lässt die implizite Typisierung nicht zu, die zu einem Object-Typ führt.Restricts implicit data type conversions to only widening conversions, disallows late binding, and disallows implicit typing that results in an Object type.

SyntaxSyntax

Option Strict { On | Off }  

-KomponentenParts

BegriffTerm DefinitionDefinition
On Optional.Optional. Ermöglicht Option Strict Überprüfung.Enables Option Strict checking.
Off Optional.Optional. Deaktiviert die Option Strict Überprüfung.Disables Option Strict checking.

HinweiseRemarks

Wenn Option Strict On oder Option Strict in einer Datei angezeigt wird, führen die folgenden Bedingungen zu einem Kompilierzeitfehler:When Option Strict On or Option Strict appears in a file, the following conditions cause a compile-time error:

  • Implizite EingrenzungskonvertierungenImplicit narrowing conversions

  • Spätes BindenLate binding

  • Implizites Typisierung der Ergebnisse in einem Object-TypImplicit typing that results in an Object type

Hinweis

In den Warnungs Konfigurationen, die Sie auf der Seite "kompilieren", Projekt-Designer (Visual Basic)festlegen können, gibt es drei Einstellungen, die den drei Bedingungen entsprechen, die einen Kompilierzeitfehler verursachen.In the warning configurations that you can set on the Compile Page, Project Designer (Visual Basic), there are three settings that correspond to the three conditions that cause a compile-time error. Weitere Informationen zur Verwendung dieser Einstellungen finden Sie unter so legen Sie Warnungs Konfigurationen in der IDE weiter unten in diesem Thema fest.For information about how to use these settings, see To set warning configurations in the IDE later in this topic.

Mit der Option Strict Off-Anweisung wird die Fehler-und Warnungs Überprüfung für alle drei Bedingungen deaktiviert, auch wenn die zugeordneten IDE-Einstellungen angeben, um diese Fehler oder Warnungen zu aktivieren.The Option Strict Off statement turns off error and warning checking for all three conditions, even if the associated IDE settings specify to turn on these errors or warnings. Die Option Strict On-Anweisung aktiviert die Fehler-und Warnungs Überprüfung für alle drei Bedingungen, auch wenn die zugeordneten IDE-Einstellungen angeben, um diese Fehler oder Warnungen zu deaktivieren.The Option Strict On statement turns on error and warning checking for all three conditions, even if the associated IDE settings specify to turn off these errors or warnings.

Wenn Sie verwendet wird, muss die Option Strict-Anweisung vor allen anderen Code Anweisungen in einer Datei angezeigt werden.If used, the Option Strict statement must appear before any other code statements in a file.

Wenn Sie Option Strict auf Onfestlegen, prüft Visual Basic, ob die Datentypen für alle Programmier Elemente angegeben werden.When you set Option Strict to On, Visual Basic checks that data types are specified for all programming elements. Datentypen können explizit angegeben oder mit lokalem Typrückschluss angegeben werden.Data types can be specified explicitly, or specified by using local type inference. Die Angabe von Datentypen für alle Programmier Elemente wird aus den folgenden Gründen empfohlen:Specifying data types for all your programming elements is recommended, for the following reasons:

  • Sie ermöglicht die IntelliSense-Unterstützung für Ihre Variablen und Parameter.It enables IntelliSense support for your variables and parameters. Auf diese Weise können Sie Ihre Eigenschaften und anderen Member anzeigen, wenn Sie Code eingeben.This enables you to see their properties and other members as you type code.

  • Der Compiler kann die Typüberprüfung durchführen.It enables the compiler to perform type checking. Die Typüberprüfung hilft Ihnen, Anweisungen zu finden, die zur Laufzeit aufgrund von Typkonvertierungs Fehlern fehlschlagen können.Type checking helps you find statements that can fail at run time because of type conversion errors. Außerdem werden Aufrufe von Methoden für Objekte identifiziert, die diese Methoden nicht unterstützen.It also identifies calls to methods on objects that do not support those methods.

  • Es beschleunigt die Ausführung von Code.It speeds up the execution of code. Ein Grund hierfür ist, dass der Visual Basic Compiler den Object Typ zuweist, wenn Sie keinen Datentyp für ein Programmier Element angeben.One reason for this is that if you do not specify a data type for a programming element, the Visual Basic compiler assigns it the Object type. Der kompilierte Code muss möglicherweise zwischen Object und anderen Datentypen hin-und herkonvertiert werden, wodurch die Leistung reduziert wird.Compiled code might have to convert back and forth between Object and other data types, which reduces performance.

Implizite einschränkende Konvertierungs FehlerImplicit Narrowing Conversion Errors

Implizite Eingrenzungskonvertierungsfehler treten auf, wenn eine implizite Datentypkonvertierung vorhanden ist, die eine Eingrenzungskonvertierung ist.Implicit narrowing conversion errors occur when there is an implicit data type conversion that is a narrowing conversion.

Visual Basic können viele Datentypen in andere Datentypen konvertieren.Visual Basic can convert many data types to other data types. Ein Datenverlust kann auftreten, wenn der Wert eines Datentyps in einen Datentyp konvertiert wird, der weniger Genauigkeit oder eine geringere Kapazität aufweist.Data loss can occur when the value of one data type is converted to a data type that has less precision or a smaller capacity. Ein Laufzeitfehler tritt auf, wenn eine solche einschränkende Konvertierung fehlschlägt.A run-time error occurs if such a narrowing conversion fails. Option Strict stellt die Benachrichtigung zur Kompilierzeit dieser einschränkenden Konvertierungen sicher, sodass Sie Sie vermeiden können.Option Strict ensures compile-time notification of these narrowing conversions so that you can avoid them. Weitere Informationen finden Sie unter implizite und explizite Konvertierungen sowie erweiternde und einschränkende Konvertierungen.For more information, see Implicit and Explicit Conversions and Widening and Narrowing Conversions.

Konvertierungen, die Fehler verursachen können, sind implizite Konvertierungen, die in Ausdrücken auftreten.Conversions that can cause errors include implicit conversions that occur in expressions. Weitere Informationen finden Sie unter den folgenden Themen:For more information, see the following topics:

Wenn Sie Zeichen folgen mithilfe des &-Operatorsverketten, werden alle Konvertierungen in die Zeichen folgen als Erweiterung betrachtet.When you concatenate strings by using the & Operator, all conversions to the strings are considered to be widening. Daher generieren diese Konvertierungen keinen impliziten einschränkenden Konvertierungs Fehler, auch wenn Option Strict auf on.So these conversions do not generate an implicit narrowing conversion error, even if Option Strict is on.

Wenn Sie eine Methode aufrufen, die über ein Argument mit einem anderen Datentyp als den entsprechenden Parameter verfügt, verursacht eine einschränkende Konvertierung einen Kompilierzeitfehler, wenn Option Strict auf ON fest.When you call a method that has an argument that has a data type different from the corresponding parameter, a narrowing conversion causes a compile-time error if Option Strict is on. Sie können den Kompilierzeitfehler vermeiden, indem Sie eine erweiternde Konvertierung oder eine explizite Konvertierung verwenden.You can avoid the compile-time error by using a widening conversion or an explicit conversion.

Implizite einschränkende Konvertierungs Fehler werden zur Kompilierzeit für Konvertierungen von Elementen in einer For Each…Next Auflistung in die Schleifen Steuerungs Variable unterdrückt.Implicit narrowing conversion errors are suppressed at compile-time for conversions from the elements in a For Each…Next collection to the loop control variable. Dies tritt auch dann auf, wenn Option Strict auf on.This occurs even if Option Strict is on. Weitere Informationen finden Sie im Abschnitt "einschränkende Konvertierungen" unter for each... Next-Anweisung.For more information, see the "Narrowing Conversions" section in For Each...Next Statement.

Fehler bei späterer BindungLate Binding Errors

Ein Objekt wird spät gebunden, wenn es einer Eigenschaft oder Methode einer Variable zugeordnet wird, für die der Typ Object deklariert wurde.An object is late bound when it is assigned to a property or method of a variable that is declared to be of type Object. Weitere Informationen finden Sie unter frühe und späte Bindung.For more information, see Early and Late Binding.

Implizite Objekttyp FehlerImplicit Object Type Errors

Implizite Objekttypfehler treten auf, wenn ein entsprechender Typ nicht für eine deklarierte Variable hergeleitet werden kann, also wir ein Typ von Object hergeleitet.Implicit object type errors occur when an appropriate type cannot be inferred for a declared variable, so a type of Object is inferred. Dies tritt vorwiegend auf, wenn Sie eine Dim-Anweisung verwenden, um eine Variable ohne die Verwendung einer As-Klausel deklarieren und Option Infer deaktiviert ist.This primarily occurs when you use a Dim statement to declare a variable without using an As clause, and Option Infer is off. Weitere Informationen finden Sie unter Option Infer-Anweisung und Visual Basic-Sprachspezifikation.For more information, see Option Infer Statement and the Visual Basic Language Specification.

Für Methoden Parameter ist die As-Klausel optional, wenn Option Strict deaktiviert ist.For method parameters, the As clause is optional if Option Strict is off. Wenn jedoch ein Parameter eine As-Klausel verwendet, muss er alle ihn verwenden.However, if any one parameter uses an As clause, they all must use it. Wenn Option Strict auf ON fest liegt, ist die As-Klausel für jede Parameterdefinition erforderlich.If Option Strict is on, the As clause is required for every parameter definition.

Wenn Sie eine Variable deklarieren, ohne eine As-Klausel zu verwenden, und Sie auf Nothingfestlegen, hat die Variable den Typ Object.If you declare a variable without using an As clause and set it to Nothing, the variable has a type of Object. In diesem Fall tritt kein Kompilierzeitfehler auf, wenn Option Strict auf on und Option Infer on ist.No compile-time error occurs in this case when Option Strict is on and Option Infer is on. Ein Beispiel hierfür ist Dim something = Nothing.An example of this is Dim something = Nothing.

Standarddatentypen und -werteDefault Data Types and Values

In der folgenden Tabelle werden die Ergebnisse verschiedener Kombinationen der Angabe von Datentyp und Initialisierer in einer Dim-Anweisungbeschrieben.The following table describes the results of various combinations of specifying the data type and initializer in a Dim Statement.

Datentyp angegeben?Data type specified? Initialisierung angegeben?Initializer specified? BeispielExample ErgebnisResult
NeinNo NeinNo Dim qty Wenn Option Strict deaktiviert ist (Standard), ist die Variable auf Nothing eingestellt.If Option Strict is off (the default), the variable is set to Nothing.

Wenn Option Strict aktiviert ist, tritt ein Kompilierzeitfehler auf.If Option Strict is on, a compile-time error occurs.
NeinNo JaYes Dim qty = 5 Wenn Option Infer aktiviert ist (Standard), übernimmt die Variable den Datentyp des Initialisierers an.If Option Infer is on (the default), the variable takes the data type of the initializer. Siehe lokaler Typrückschluss.See Local Type Inference.

Wenn Option Infer und Option Strict ausgeschaltet sind, nimmt die Variable den Datentyp des Object an.If Option Infer is off and Option Strict is off, the variable takes the data type of Object.

Wenn Option Infer deaktiviert ist und Option Strict aktiviert ist, tritt ein Kompilierzeitfehler auf.If Option Infer is off and Option Strict is on, a compile-time error occurs.
JaYes NeinNo Dim qty As Integer Die Variable wird auf den Standardwert für den Datentyp initialisiert.The variable is initialized to the default value for the data type. Weitere Informationen finden Sie unter Dim-Anweisung.For more information, see Dim Statement.
JaYes JaYes Dim qty As Integer = 5 Wenn der Datentyp der Initialisierung nicht in den angegebenen Datentyp konvertiert werden kann, tritt ein Fehler während der Kompilierung auf.If the data type of the initializer is not convertible to the specified data type, a compile-time error occurs.

Wenn eine Option Strict-Anweisung nicht vorhanden istWhen an Option Strict Statement Is Not Present

Wenn der Quellcode keine Option Strict-Anweisung enthält, wird die Option Strict -Einstellung auf der Seite "kompilieren", Projekt-Designer (Visual Basic) verwendet.If the source code does not contain an Option Strict statement, the Option strict setting on the Compile Page, Project Designer (Visual Basic) is used. Die Seite Kompilieren verfügt über Einstellungen, die eine zusätzliche Kontrolle über die Bedingungen bereitstellen, die einen Fehler generieren.The Compile Page has settings that provide additional control over the conditions that generate an error.

Wenn Sie den Befehlszeilen Compiler verwenden, können Sie die -optionstrict- Compileroption verwenden, um eine Einstellung für Option Strictanzugeben.If you are using the command-line compiler, you can use the -optionstrict compiler option to specify a setting for Option Strict.

So legen Sie "Option Strict" in der IDE festTo set Option Strict in the IDE

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig.The Visual Studio edition that you have and the settings that you use determine these elements. Weitere Informationen finden Sie unter Personalisieren der IDE.For more information, see Personalizing the IDE.

  1. Wählen Sie im Projektmappen-Explorer ein Projekt aus.In Solution Explorer, select a project. Klicken Sie im Menü Projekt auf Eigenschaften.On the Project menu, click Properties.

  2. Legen Sie auf der Registerkarte Kompilieren den Wert im Feld Option Strict fest.On the Compile tab, set the value in the Option Strict box.

So legen Sie Warnungs Konfigurationen in der IDE festTo set warning configurations in the IDE

Wenn Sie die Seite kompilieren, Projekt-Designer (Visual Basic) anstelle einer Option Strict-Anweisung verwenden, haben Sie zusätzliche Kontrolle über die Bedingungen, die Fehler generieren.When you use the Compile Page, Project Designer (Visual Basic) instead of an Option Strict statement, you have additional control over the conditions that generate errors. Der Abschnitt Warnungs Konfigurationen der Kompilierungs Seite weist Einstellungen auf, die den drei Bedingungen entsprechen, die einen Kompilierzeitfehler verursachen, wenn Option Strict auf ON fest liegt.The Warning configurations section of the Compile Page has settings that correspond to the three conditions that cause a compile-time error when Option Strict is on. Die drei Einstellungen sind die folgenden:Following are these settings:

  • Implizite KonvertierungImplicit conversion

  • Späte Bindung; Aufruf könnte zur Laufzeit einen Fehler verursachenLate binding; call could fail at run time

  • Impliziter Typ; Objekt wird angenommenImplicit type; object assumed

Wenn Sie Option Strict auf Ein festlegen, werden alle drei Warnungskonfigurationseinstellungen auf Fehler festgelegt.When you set Option Strict to On, all three of these warning configuration settings are set to Error. Wenn Sie Option Strict auf Aus festlegen werden alle drei Einstellungen auf Keine festgelegt.When you set Option Strict to Off, all three settings are set to None.

Sie können individuell jede Warnungskonfigurationseinstellung auf Keine, Warnung oder Fehler festlegen.You can individually change each warning configuration setting to None, Warning, or Error. Wenn alle drei Warnungskonfigurationseinstellungen auf Fehler festgelegt sind, erscheint On im Option strict-Feld.If all three warning configuration settings are set to Error, On appears in the Option strict box. Wenn alle drei Einstellungen auf Keine festgelegt sind, erscheint Off im Feld.If all three are set to None, Off appears in this box. Für jede andere Kombination dieser Einstellungen erscheint (benutzerdefiniert) .For any other combination of these settings, (custom) appears.

So legen Sie die Option strikte Standardeinstellung für neue Projekte festTo set the Option Strict default setting for new projects

Wenn Sie ein Projekt erstellen, wird die Option Strict -Einstellung auf der Registerkarte Kompilieren auf die Option Strict -Einstellung im Dialogfeld Optionen festgelegt.When you create a project, the Option Strict setting on the Compile tab is set to the Option Strict setting in the Options dialog box.

Wenn Sie Option Strict in diesem Dialogfeld festlegen möchten, klicken Sie im Menü Extras auf Optionen.To set Option Strict in this dialog box, on the Tools menu, click Options. Erweitern Sie im Dialogfeld Optionen Projekte und Lösungen, und klicken Sie dann auf VB Defaults.In the Options dialog box, expand Projects and Solutions, and then click VB Defaults. Die ursprüngliche Standardeinstellung in VB-Standardeinstellungen ist Off.The initial default setting in VB Defaults is Off.

So legen Sie "Option Strict" in der Befehlszeile festTo set Option Strict on the command line

Schließen Sie die -optionstrict- Compileroption in den vbc -Befehl ein.Include the -optionstrict compiler option in the vbc command.

BeispielExample

Die folgenden Beispiele veranschaulichen Kompilierzeitfehler, die von impliziten Typkonvertierungen verursacht werden, die einschränkende Konvertierungen sind.The following examples demonstrate compile-time errors caused by implicit type conversions that are narrowing conversions. Diese Kategorie von Fehlern entspricht der impliziten Konvertierungs Bedingung auf der Seite Kompilieren.This category of errors corresponds to the Implicit conversion condition on the Compile Page.

' 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

BeispielExample

Im folgenden Beispiel wird ein Kompilierzeitfehler veranschaulicht, der durch eine späte Bindung verursacht wurde.The following example demonstrates a compile-time error caused by late binding. Diese Kategorie von Fehlern entspricht der späten Bindung; der Aufruf könnte bei der Laufzeit auf der Seite " Kompilieren" fehlschlagen.This category of errors corresponds to the Late binding; call could fail at run time condition on the Compile Page.

' 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

BeispielExample

In den folgenden Beispielen werden Fehler veranschaulicht, die durch Variablen verursacht werden, die mit einem impliziten Typ von Objectdeklariert werden.The following examples demonstrate errors caused by variables that are declared with an implicit type of Object. Diese Kategorie von Fehlern entspricht dem impliziten Typ; das Objekt wird auf der Seite "kompilieren" als Bedingung angenommen.This category of errors corresponds to the Implicit type; object assumed condition on the Compile Page.

' 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 auchSee also