Freigeben über


Option Infer-Anweisung

Ermöglicht die Verwendung des lokalen Typrückschlusses beim Deklarieren von Variablen.

Option Infer { On | Off }

Teile

Begriff

Definition

On

Dies ist optional. Ermöglicht den lokalen Typrückschluss.

Off

Dies ist optional. Deaktiviert den lokalen Typrückschluss.

Hinweise

Geben Sie zum Festlegen von Option Infer in einer Datei am Anfang der Datei Option Infer On oder Option Infer Off ein. Wenn der in einer Datei für Option Infer festgelegte Wert mit dem in der IDE oder in der Befehlszeile festgelegten Wert im Konflikt steht, hat der Wert in der Datei Vorrang.

Wenn Sie für Option Infer On festlegen, können Sie lokale Variablen deklarieren, ohne explizit einen Datentyp anzugeben. Der Compiler leitet den Datentyp einer Variablen vom Typ des Initialisierungsausdrucks ab.

In der folgenden Abbildung ist Option Infer eingeschaltet. Die Variable in der Deklaration Dim someVar = 2 wird als ganze Zahl durch Typrückschluss deklariert.

IntelliSense, wenn die Option Infer aktiviert ist.

IntelliSense-Ansicht der Deklaration.

In der folgenden Abbildung ist Option Infer deaktiviert. Die Variable in der Deklaration Dim someVar = 2 ist durch Typrückschluss als Object deklariert. In diesem Beispiel ist die Einstellung Option Strict inSeite "Kompilieren", Projekt-Designer (Visual Basic) auf Aus eingestellt.

IntelliSense, wenn Option Infer deaktiviert ist

IntelliSense-Ansicht der Deklaration.

Hinweis

Wenn eine Variable als Objectdeklariert ist, kann sich der Laufzeittyp ändern, während das Programm ausgeführt wird.Visual Basic führt Operationen mit Bezeichnung Boxing und Unboxing aus, um zwischen einem Object und einem Werttyp zu konvertieren, was die Ausführung langsamer macht.Weitere Informationen zu Boxing und Unboxing finden Sie unter der Visual Basic-Sprachspezifikation.

Typrückschluss findet auf Prozedurebene Anwendung und nicht außerhalb einer Prozedur in einer Klasse, Struktur, Modul oder Schnittstelle.

Weitere Informationen finden Sie unter Lokaler Typrückschluss (Visual Basic).

Wenn eine Option Infer-Anweisung nicht vorhanden ist

Wenn der Quellcode keine Option Infer-Anweisung enthält, wird die Einstellung Option Infer auf der Seite "Kompilieren", Projekt-Designer (Visual Basic) verwendet. Wenn der Befehlszeilen-Compiler verwendet wird, wird die /optioninfer-Compileroption verwendet.

Festlegen der Option Infer in der IDE

  1. Wählen Sie im Projektmappen-Explorer ein Projekt aus. Klicken Sie im Menü Projekt auf Eigenschaften. Weitere Informationen finden Sie unter Introduction to the Project Designer.

  2. Klicken Sie die Registerkarte Kompilieren.

  3. Legen Sie den Wert im Textfeld Option infer fest.

Wenn Sie ein neues Projekt erstellen, ist die Einstellung Option Infer auf der Registerkarte Kompilieren auf die Einstellung Option Infer im Textfeld VB Defaults festgelegt. Klicken Sie zum Zugriff auf das Dialogfeld VB Defaults im das Menü Tools auf Optionen. Erweitern Sie im Dialogfeld Optionen Projekte und Lösungen und klicken Sie dann auf VB Defaults. Die ursprüngliche Standardeinstellung in VB-Standard ist On.

Festlegen der Option Infer in der Befehlszeile.

  • Aktivieren Sie die /optioninfer-Compileroption im vbc-Befehl.

Standarddatentypen und -werte

Die folgende Tabelle beschreibt die Ergebnisse der verschiedenen Kombinationen der Spezifizierung von Datentyp und Initialisierung in einer Dim-Anweisung.

Datentyp angegeben?

Initialisierung angegeben?

Beispiel

Ergebnis

Nein

Nein

Dim qty

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

Wenn Option Strict aktiviert ist, tritt ein Kompilierungsfehler auf.

Nein

Ja

Dim qty = 5

Wenn Option Infer aktiviert ist (Standard), übernimmt die Variable den Datentyp des Initialisierers an. Siehe Lokaler Typrückschluss (Visual Basic).

Wenn Option Infer und Option Strict ausgeschaltet sind, nimmt die Variable den Datentyp des Object an.

Wenn Option Infer deaktiviert ist und Option Strict aktiviert ist, tritt ein Kompilierungsfehler 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 (Visual Basic).

Ja

Ja

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.

Beispiel

Die folgenden Beispiele veranschaulichen, wie die Option Infer-Anweisung den lokalen Typrückschluss ermöglicht.

' Enable Option Infer before trying these examples. 

' Variable num is an Integer. 
Dim num = 5

' Variable dbl is a Double. 
Dim dbl = 4.113

' Variable str is a String. 
Dim str = "abc" 

' Variable pList is an array of Process objects. 
Dim pList = Process.GetProcesses()

' Variable i is an Integer. 
For i = 1 To 10
    Console.WriteLine(i)
Next 

' Variable item is a string. 
Dim lst As New List(Of String) From {"abc", "def", "ghi"}

For Each item In lst
    Console.WriteLine(item)
Next 

' Variable namedCust is an instance of the Customer class. 
Dim namedCust = New Customer With {.Name = "Blue Yonder Airlines",
                                   .City = "Snoqualmie"}

' Variable product is an instance of an anonymous type. 
Dim product = New With {Key .Name = "paperclips", .Price = 1.29}

' If customers is a collection of Customer objects in the following  
' query, the inferred type of cust is Customer, and the inferred type 
' of custs is IEnumerable(Of Customer). 
Dim custs = From cust In customers 
            Where cust.City = "Seattle"  
            Select cust.Name, cust.ID

Das folgende Beispiel veranschaulicht, dass der Laufzeittyp abweichen kann, wenn eine Variable als ein Object gekennzeichnet ist.

' Disable Option Infer when trying this example. 

Dim someVar = 5
Console.WriteLine(someVar.GetType.ToString)

' If Option Infer is instead enabled, the following 
' statement causes a run-time error. This is because 
' someVar was implicitly defined as an integer.
someVar = "abc"
Console.WriteLine(someVar.GetType.ToString)

' Output: 
'  System.Int32 
'  System.String

Siehe auch

Referenz

Dim-Anweisung (Visual Basic)

Option Compare-Anweisung

Option Explicit-Anweisung (Visual Basic)

Option Strict-Anweisung

VB-Standard, Projekte, Dialogfeld "Optionen"

/optioninfer

Boxing und Unboxing (C#-Programmierhandbuch)

Konzepte

Lokaler Typrückschluss (Visual Basic)