Option Strict StatementOption Strict Statement

Implizite datentypkonvertierungen auf erweiternde Konvertierungen eingeschränkt und lässt keine späte Bindung lässt keine impliziten Typisierung der Ergebnisse in eine Object Typ.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 }  

TeileParts

BegriffTerm DefinitionDefinition
On Dies ist optional.Optional. Ermöglicht Option Strict überprüfen.Enables Option Strict checking.
Off Dies ist optional.Optional. Deaktiviert die Option Strict überprüfen.Disables Option Strict checking.

HinweiseRemarks

Wenn Option Strict On oder Option Strict wird in einer Datei, die folgenden Bedingungen dazu führen, dass einen Fehler während der Kompilierung: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

Die Warnung-Konfigurationen, die Sie für festlegen können die Seite "Kompilieren", Projekt-Designer (Visual Basic), es gibt drei Einstellungen, die mit den drei Bedingungen entsprechen, die dazu führen, einen Fehler während der Kompilierung dass.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. Informationen dazu, wie Sie diese Einstellungen verwenden, finden Sie unter Warnungskonfigurationen festlegen, in der IDE weiter unten in diesem Thema.For information about how to use these settings, see To set warning configurations in the IDE later in this topic.

Die Option Strict Off Anweisung deaktiviert die Fehler und die Warnung überprüfen alle drei Bedingungen, selbst wenn die zugehörigen 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 Warnung überprüfen alle drei Bedingungen, selbst wenn die zugehörigen 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 verwendet, die Option Strict Anweisung muss vor allen anderen codeanweisungen in einer Datei verwendet werden.If used, the Option Strict statement must appear before any other code statements in a file.

Wenn Sie festlegen, Option Strict zu On, Visual Basic überprüft, dass die Datentypen für alle Programmiersprachen 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 werden oder mithilfe von lokalem Typrückschluss angegeben werden.Data types can be specified explicitly, or specified by using local type inference. Angabe von Datentypen für alle Programmierelemente wird, den folgenden Gründen empfohlen:Specifying data types for all your programming elements is recommended, for the following reasons:

  • Sie können IntelliSense-Unterstützung für Ihre Variablen und Parameter.It enables IntelliSense support for your variables and parameters. Dadurch können Sie die Eigenschaften und andere Member zu sehen, wie Sie Code eingeben.This enables you to see their properties and other members as you type code.

  • Sie können den Compiler an, führen Sie die Überprüfung des Typs.It enables the compiler to perform type checking. Typüberprüfung können Sie die Anweisungen zu finden, die aufgrund von Fehler bei der datentypkonvertierung zur Laufzeit fehlschlagen können.Type checking helps you find statements that can fail at run time because of type conversion errors. Er gibt außerdem Aufrufe von Methoden für Objekte, 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, wenn Sie einen Datentyp für ein Programmierelement nicht angeben, die Visual Basic-Compiler weist die Object Typ.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. Kompilierte Code möglicherweise zwischen hin und her konvertiert Object und andere Datentypen, die Leistung verringert.Compiled code might have to convert back and forth between Object and other data types, which reduces performance.

Implizite Eingrenzungskonvertierungsfehler tretenImplicit 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. Es können Datenverluste auftreten, wenn der Wert von einem Datentyp in einen Datentyp konvertiert wird, die geringere Genauigkeit oder eine kleinere 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 ein Fehler auftritt.A run-time error occurs if such a narrowing conversion fails. Option Strict Stellt die Benachrichtigung während der Kompilierung dieser einschränkenden Konvertierungen sicher, damit Sie diese 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 und Widening and Narrowing Conversions.For more information, see Implicit and Explicit Conversions and Widening and Narrowing Conversions.

Konvertierungen, die zu Fehlern führen können enthalten implizite Konvertierungen, die auftreten, in Ausdrücken.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:

Beim Verketten von Zeichenfolgen mithilfe der & Operator, gelten alle Konvertierungen auf die Zeichenfolgen erweiternde sein.When you concatenate strings by using the & Operator, all conversions to the strings are considered to be widening. Damit diese Konvertierungen nicht, eine implizite einschränkende Konvertierungsfehler, auch wenn generiert werden Option Strict ist.So these conversions do not generate an implicit narrowing conversion error, even if Option Strict is on.

Wenn Sie eine Methode, die ein Argument, das einen Datentyp, der sich von dem entsprechenden Parameter aufweist aufrufen, verursacht eine einschränkende Konvertierung einen Fehler während der Kompilierung, wenn Option Strict ist.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 die Kompilierungsfehler vermeiden, über eine erweiternde Konvertierung oder eine explizite Konvertierung.You can avoid the compile-time error by using a widening conversion or an explicit conversion.

Implizite eingrenzungskonvertierungsfehler treten unterdrückt werden, zum Zeitpunkt der Kompilierung für Konvertierungen aus den Elementen in einem For Each…Next -Auflistung, um die Schleifensteuerungsvariable.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 auf, auch wenn Option Strict ist.This occurs even if Option Strict is on. Weitere Informationen finden Sie im Abschnitt "Einschränkende Konvertierungen" in für jede... Nächste Anweisung.For more information, see the "Narrowing Conversions" section in For Each...Next Statement.

Späte Bindung FehlerLate 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ühes und spätes Binden.For more information, see Early and Late Binding.

Implizite ObjekttypfehlerImplicit 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 die Parameter der Methode die As -Klausel ist optional Wenn Option Strict ist deaktiviert.For method parameters, the As clause is optional if Option Strict is off. Jedoch einen Parameter verwendet eine As -Klausel jeweils müssen verwenden.However, if any one parameter uses an As clause, they all must use it. Wenn Option Strict ist, wird die As -Klausel ist erforderlich für jede Parameterdefinition.If Option Strict is on, the As clause is required for every parameter definition.

Wenn Sie eine Variable, ohne deklarieren eine As Klausel und legen ihn auf Nothing, hat die Variable ein Object.If you declare a variable without using an As clause and set it to Nothing, the variable has a type of Object. Keine Kompilierungsfehler tritt auf, in diesem Fall beim Option Strict befindet sich auf und Option Infer 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

Die folgende Tabelle beschreibt die Ergebnisse der verschiedenen Kombinationen der Angabe von Datentyp und Initialisierung in einer Dim-Anweisung.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 Kompilierungsfehler 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. Finden Sie unter 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 Kompilierungsfehler 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 kein Option Strict -Anweisung, die Option strict festlegen auf die Seite "Kompilieren", Projekt-Designer (Visual Basic) wird 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 zusätzliche Kontrolle über die Bedingungen zu bieten, die einen Fehler generieren.The Compile Page has settings that provide additional control over the conditions that generate an error.

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

Option Strict festlegen, in der IDETo 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. Auf der Kompilieren Registerkarte, legen Sie den Wert der Option Strict Feld.On the Compile tab, set the value in the Option Strict box.

Festlegen von Warnungskonfigurationen in der IDETo set warning configurations in the IDE

Bei Verwendung der Seite "Kompilieren", Projekt-Designer (Visual Basic) statt einer Option Strict -Anweisung, haben Sie zusätzliche Kontrolle über die Bedingungen, die zu Fehlern führen.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. Die Warnungskonfigurationen Teil der Seite "Kompilieren" verfügt über Einstellungen, die mit den drei Bedingungen entsprechen, die dazu führen, einen Fehler während der Kompilierung dass bei Option Strict ist.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.

Die Einstellung der Option Strict für neue Projekte festlegenTo set the Option Strict default setting for new projects

Wenn Sie ein Projekt erstellen der Option Strict festlegen auf der Kompilieren auf die Registerkarte "festgelegt ist die Option Strict festlegen in der Optionen Das Dialogfeld.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.

Festzulegende Option Strict in diesem Dialogfeld auf die Tools Menü klicken Sie 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 Defaults ist Off.The initial default setting in VB Defaults is Off.

Option Strict in der Befehlszeile festlegenTo set Option Strict on the command line

Enthalten die /optionstrict -Compileroption in der Vbc Befehl.Include the /optionstrict compiler option in the vbc command.

BeispielExample

Die folgenden Beispiele veranschaulichen die Kompilierungsfehler, die durch implizite typkonvertierungen, die nur eine annähernde sind verursacht werden.The following examples demonstrate compile-time errors caused by implicit type conversions that are narrowing conversions. Diese Kategorie von Fehlern entspricht der implizite Konvertierung -Bedingung in die 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

Das folgende Beispiel zeigt einen Fehler während der Kompilierung, die durch die späte Bindung verursacht.The following example demonstrates a compile-time error caused by late binding. Diese Kategorie von Fehlern entspricht der späte Bindung; Aufruf könnte zur Laufzeit nicht ausgeführt -Bedingung in die Seite "Kompilieren".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

Die folgenden Beispiele veranschaulichen von Variablen, die mit einem impliziten Typs deklariert werden verursachten Fehler Object.The following examples demonstrate errors caused by variables that are declared with an implicit type of Object. Diese Kategorie von Fehlern entspricht der impliziter Typ; Objekt wird davon ausgegangen, dass -Bedingung in die Seite "Kompilieren".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