Option Infer-Anweisung
Ermöglicht den lokalen Typrückschluss beim Deklarieren von Variablen.
Option Infer { On | Off }
Bestandteile
Ausdruck |
Definition |
On |
Optional. Aktiviert den lokalen Typrückschluss. |
Off |
Optional. Deaktiviert den lokalen Typrückschluss. |
Hinweise
Um Option Infer in einer Datei festzulegen, geben Sie Option Infer On oder Option Infer Off am oberen Rand der Datei ein, vor allem anderen Quellcode. Wenn der für Option Infer in einer Datei festgelegte Wert dem in der IDE oder auf der Befehlszeile festgelegten Wert widerspricht, hat der Wert in der Datei Vorrang.
Wenn Sie Option Infer auf 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 aktiviert. Die Variable in der Deklaration Dim someVar = 2 wird als ganze Zahl durch Typrückschluss deklariert.
IntelliSense, wenn Option Infer aktiviert ist.
In der folgenden Abbildung ist Option Infer deaktiviert. Die Variable in der Deklaration Dim someVar = 2 wird als ein Object durch Typrückschluss deklariert. In diesem Beispiel wird die Einstellung Option Strict auf Off im Seite "Kompilieren", Projekt-Designer (Visual Basic) festgelegt.
IntelliSense, wenn die Option Infer deaktiviert ist
Wenn eine Variable als ein Objectdeklariert wird, kann der Laufzeittyp sich ändern, während das Programm ausgeführt wird. Visual Basic führt Boxing und Unboxing genannte Operationen für die Konvertierung zwischen einem Object und einen Werttyp aus. Diese Operationen machen die Ausführung langsamer. Informationen zum Boxing und Unboxing finden Sie unter Visual Basic-Sprachspezifikation.
Typrückschluss gilt auf Prozedurebene 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 Befehlszeile-Compiler verwendet wird, wird die /optioninfer-Compileroption verwendet.
So legen Sie Option Infer in der IDE fest
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.
Klicken Sie auf die Registerkarte Kompilieren.
Legen Sie den Wert im Feld Option Infer fest.
Wenn Sie ein neues Projekt erstellen, wird die Option Infer-Einstellung auf der Registerkarte Kompilieren auf die Option Infer-Einstellung im Dialogfeld VB-Standard festgelegt. Um das Dialogfeld VB-Standard zu öffnen, klicken Sie im Menü Extras auf Optionen. 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 On.
So legen Sie Option Infer in der Befehlszeile fest
- Fügen Sie die /optioninfer-Compileroption in den vbc-Befehl ein.
Typen und Werte von Standarddaten
Die folgende Tabelle beschreibt die Ergebnisse der verschiedenen Kombinationen der Angabe von Datentyp und Initialisierung in einer Dim-Anweisung.
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. |
Beispiel
In den folgenden Beispielen wird veranschaulicht, 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 identifiziert wird.
' 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
Option Explicit-Anweisung (Visual Basic)
VB-Standard, Projekte, Dialogfeld "Optionen"
Konzepte
Lokaler Typrückschluss (Visual Basic)
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
April 2011 |
Informationen über den Object-Typ und den Typrückschluss hinzugefügt. |
Informationsergänzung. |
März 2011 |
Die Bemerkungen geändert und ein Beispiel hinzugefügt. |
Informationsergänzung. |