Option Infer — Instrukcja
Umożliwia korzystanie z wnioskowania typ lokalne w deklarowania zmiennych.
Option Infer { On | Off }
Części
Termin |
Definicja |
On |
Parametr opcjonalny.Włącza wnioskowania typu lokalnego. |
Off |
Parametr opcjonalny.Wyłącza wnioskowania typu lokalnego. |
Uwagi
Aby ustawić Option Infer w pliku, wpisz Option Infer On lub Option Infer Off na początku pliku przed uruchomieniem jakiegokolwiek kodu źródłowego.Jeśli wartość dla Option Infer w konflikcie pliku ma wartość w środowisku IDE lub w wierszu polecenia, wartość w pliku ma pierwszeństwo.
Podczas ustawiania Option Infer do On, zmiennych lokalnych można zadeklarować bez jawne określenie typu danych.Kompilator ustala typ danych zmiennej z typem jej wyrażenia inicjowania.
Na poniższej ilustracji Option Infer jest włączona.Zmienna w deklaracji Dim someVar = 2 typu wnioskowania deklaruje jako liczba całkowita.
Technologia IntelliSense przy włączonej opcji uwzględnienia
Na poniższej ilustracji Option Infer jest wyłączona.Zmienna w deklaracji Dim someVar = 2 jest zadeklarowany jako Object przez wnioskowania typu.W tym przykładzie Option Strict został ustawiony na wyłączenia na Strona kompilowania, Projektant projektu (Visual Basic).
Technologia IntelliSense, jeśli opcja uwzględnienia jest wyłączona
[!UWAGA]
Jeśli zmienna jest zadeklarowany jako Object, typów w czasie wykonywania można zmienić, gdy program jest uruchomiony.Visual Basicwykonuje operacje o nazwie bokserskie i unboxing do konwersji między Object i typu wartości, co sprawia, że wykonywanie mniejsza.Aby uzyskać informacje na temat bokserskie i rozpakowywania, zobacz Specyfikacja języka Visual Basic.
Typ wnioskowania stosowana na poziomie procedury, a nie odnoszą się poza procedurę w klasy, struktury, moduł lub interfejs.
Aby uzyskać dodatkowe informacje, zobacz Wnioskowanie o typie lokalnym (Visual Basic).
Gdy uwzględnienia opcją Instrukcja nie jest obecny
Jeśli kod źródłowy nie zawiera Option Infer instrukcję, opcję uwzględnienia ustawienie w Strona kompilowania, Projektant projektu (Visual Basic) jest używany.Jeśli używana jest kompilatora wiersza polecenia, /optioninfer jest używana opcja kompilatora.
Aby ustawić opcję uwzględnienia w środowisku IDE
W Eksploratora rozwiązań, wybierz projekt.Na projektu menu, kliknij przycisk właściwości.Aby uzyskać więcej informacji, zobacz Introduction to the Project Designer.
Kliknij przycisk skompilować karty.
Ustawia wartość w opcję uwzględnienia pola.
Podczas tworzenia nowego projektu, opcję uwzględnienia ustawienie w skompilować karta jest ustawiona na opcję uwzględnienia ustawienie domyślne VB okno dialogowe.Do dostępu do domyślne VB dialogowym na narzędzia menu, kliknij przycisk opcje.W opcje okna dialogowego rozwiń projektów i rozwiązań, a następnie kliknij przycisk domyślne VB.Początkowe domyślne ustawienie domyślne VB jest On.
Aby ustawić opcję uwzględnienia w wierszu polecenia
- Obejmują /optioninfer opcję kompilatora w vbc polecenia.
Dane domyślne typy i wartości
W poniższej tabeli opisano wyniki różnych kombinacji typu danych i inicjator w Dim instrukcji.
Określony typ danych? |
Inicjator określone? |
Przykład |
Wynik |
Nie |
Nie |
Dim qty |
Jeśli Option Strict jest wyłączone (domyślnie), zmiennej ma ustawioną wartość Nothing. Jeśli Option Strict jest włączona, wystąpi błąd kompilacji. |
Nie |
Tak |
Dim qty = 5 |
Jeśli Option Infer znajduje się na (domyślnie), zmiennej ma dane typu inicjatora.Zobacz Wnioskowanie o typie lokalnym (Visual Basic). Jeśli Option Infer jest wyłączona i Option Strict jest wyłączony, zmienna ma typ danych Object. Jeśli Option Infer jest wyłączona i Option Strict jest włączona, wystąpi błąd kompilacji. |
Tak |
Nie |
Dim qty As Integer |
Zmienna jest ustawiana wartość domyślna dla typu danych.Aby uzyskać więcej informacji, zobacz Dim — Instrukcja (Visual Basic). |
Tak |
Tak |
Dim qty As Integer = 5 |
Jeśli typ danych inicjatora nie jest można przekonwertować na typ danych określony typ, występuje błąd kompilacji. |
Przykład
W poniższych przykładach przedstawiono sposób, w jaki Option Infer instrukcji umożliwia wnioskowania typu lokalnego.
' 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
Poniższy przykład pokazuje, że typów w czasie wykonywania może się różnić, gdy zmienna jest zidentyfikowane jako Object.
' 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
Zobacz też
Informacje
Dim — Instrukcja (Visual Basic)
Option Explicit — Instrukcja (Visual Basic)
Domyślne ustawienia programu Visual Basic, Projekty, okno dialogowe Opcje
Konwersja boxing i konwersja unboxing (Przewodnik programowania w języku C#)