Udostępnij za pośrednictwem


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

Technologia IntelliSense — widok deklaracji.

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

Technologia IntelliSense — widok deklaracji.

[!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

  1. 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.

  2. Kliknij przycisk skompilować karty.

  3. 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 Compare — Instrukcja

Option Explicit — Instrukcja (Visual Basic)

Option Strict — Instrukcja

Domyślne ustawienia programu Visual Basic, Projekty, okno dialogowe Opcje

/optioninfer

Konwersja boxing i konwersja unboxing (Przewodnik programowania w języku C#)

Koncepcje

Wnioskowanie o typie lokalnym (Visual Basic)