Udostępnij za pośrednictwem


Opcja wywnioskować instrukcji

Umożliwia użycie typu lokalnego wnioskowanie do deklarowania zmiennych.

Option Infer { On | Off }

Części

Termin

Definicja

On

Opcjonalne.Umożliwia wnioskowanie typu lokalnego.

Off

Opcjonalne.Wyłącza wnioskowanie typu lokalnego.

Uwagi

Aby ustawić Option Infer w pliku, wpisz Option Infer On lub Option Infer Off u góry pliku, zanim inny kod źródłowy.Jeśli wartość dla Option Infer w konflikty z zestawu wartości w IDE lub w wierszu polecenia, wartość w pliku ma pierwszeństwo.

Podczas ustawiania Option Infer do On, deklarowaniu zmiennych lokalnych bez jawnego podania typu danych.Kompilator ustala typ danych zmiennej z typem wyrażenia jego inicjowania.

Na poniższej ilustracji Option Infer jest włączona.W deklaracji zmiennej Dim someVar = 2 jest zadeklarowany jako liczbę całkowitą poprzez wnioskowanie typu.

Technologia IntelliSense przy włączonej opcji rozpoznać

Technologia IntelliSense — widok deklaracji.

Na poniższej ilustracji Option Infer jest wyłączona.W deklaracji zmiennej Dim someVar = 2 jest zadeklarowana jako Object przez wnioskowanie typu.W tym przykładzie Opcji ścisłego jest ustawiona poza na Skompiluj strony, Project Designer (Visual Basic).

Technologia IntelliSense, gdy opcja wywnioskować jest wyłączony

Technologia IntelliSense — widok deklaracji.

[!UWAGA]

Jeśli zmienna jest zadeklarowana jako Object, można zmienić typu run-time, podczas gdy program jest uruchomiony.Visual Basicwykonuje operacje o nazwie boksie i rozpakowanej do konwersji między Object i typ wartości, który sprawia, że wykonanie wolniej.Aby uzyskać informacje na temat boksie i pakowania, zobacz Specyfikacja języka Visual Basic.

Wnioskowanie typu stosuje się na poziomie procedury i nie stosuje się poza procedurą w klasy, struktury, moduł lub interfejsu.

Aby uzyskać dodatkowe informacje, zobacz Wnioskowanie typu lokalnego (Visual Basic).

Gdy opcja wywnioskować instrukcja nie jest obecny

Jeśli nie zawiera kodu źródłowego Option Infer instrukcji, Wywnioskować opcji na Skompiluj strony, Project Designer (Visual Basic) jest używany.Jeśli używany jest kompilatora wiersza polecenia, /optioninfer jest używana opcja kompilatora.

Aby ustawić opcję wywnioskować w IDE

  1. W Solution Explorer, zaznacz projekt.Na Projekt menu, kliknij przycisk Właściwości.Aby uzyskać więcej informacji, zobacz Wprowadzenie do projektanta projektu.

  2. Kliknij przycisk skompilować kartę.

  3. Ustaw tę wartość w rozpoznać opcja pole.

Podczas tworzenia nowego projektu, Rozpoznać opcja ustawienie na skompilować karta jest ustawiona na Rozpoznać opcja ustawienie Domyślne VB okno dialogowe.Dostęp Domyślne VB w oknie dialogowym, na Narzędzia menu, kliknij przycisk Opcje.W Opcje okno dialogowe rozwiń projektów i roztwory, a następnie kliknij przycisk Domyślne VB.Ustawienie początkowe domyślne w Domyślne VB jest On.

Aby ustawić opcję wywnioskować z wiersza polecenia

Dane domyślne typy i wartości

W poniższej tabeli opisano wyniki różnych kombinacji określający typ danych i inicjatora w Dim instrukcji.

Określony typ danych?

Inicjator określone?

Przykład

Wynik

Nr

Nr

Dim qty

Jeśli Option Strict jest wyłączone (domyślnie), zmienna jest ustawiana Nothing.

Jeśli Option Strict jest włączone, wystąpi błąd kompilacji.

Nr

Tak

Dim qty = 5

Jeśli Option Infer znajduje się na (domyślnie), typ zmiennej przyjmuje dane inicjatora.See Wnioskowanie typu lokalnego (Visual Basic).

Jeśli Option Infer jest wyłączona i Option Strict jest wyłączony, zmienna ma typ danych z Object.

Jeśli Option Infer jest wyłączona i Option Strict jest włączone, wystąpi błąd kompilacji.

Tak

Nr

Dim qty As Integer

Zmienna jest ustawiana na wartość domyślną dla typu danych.Aby uzyskać więcej informacji, zobacz Dim instrukcji (Visual Basic).

Tak

Tak

Dim qty As Integer = 5

Jeśli typ danych inicjujących nie jest konwertowany na określony typ danych, wystąpi błąd kompilacji.

Przykład

Następujące przykłady przedstawiają sposób, w jaki Option Infer instrukcji umożliwia wnioskowanie 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 demonstruje, że typu run-time mogą się różnić, gdy zmienna jest identyfikowany 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 instrukcji (Visual Basic)

Opcja porównywania instrukcji

Opcja wyraźne stwierdzenie (Visual Basic)

Opcja ścisłego instrukcji

Okno dialogowe Opcje domyślne, projekty, Visual Basic

/optioninfer

Boks i pakowania (C# Programming Guide)

Koncepcje

Wnioskowanie typu lokalnego (Visual Basic)