Sdílet prostřednictvím


Možnost odvodit prohlášení

Umožňuje použití odvození typu místní v deklarování proměnných.

Option Infer { On | Off }

Části

Termín

Definice

On

Nepovinné.Umožňuje místní typ odvození.

Off

Nepovinné.Zakáže odvození typu místní.

Poznámky

Nastavit Option Infer v souboru, zadejte Option Infer On nebo Option Infer Off na začátku souboru před jinými zdrojový kód.Pokud je nastavena hodnota pro Option Infer v souboru konflikty s nastavenou hodnotu v IDE nebo na příkazovém řádku, hodnota v souboru má přednost.

Při nastavení Option Infer na On, bez výslovně uvede typ dat můžete deklarovat lokální proměnné.Kompilátor odvodí datový typ proměnné z typu výrazu jeho inicializace.

Na následujícím obrázku Option Infer je zapnutý.V deklaraci proměnné Dim someVar = 2 je prohlášena za celé odvození typu.

Technologie IntelliSense, pokud je zapnutá možnost odvodit

Technologie IntelliSense zobrazit prohlášení.

Na následujícím obrázku Option Infer je vypnutý.V deklaraci proměnné Dim someVar = 2 je deklarován jako Object v odvození typu.V tomto příkladu Option Strict je nastavena na vypnout na Kompilace stránky projektu Designer (Visual Basic).

Technologie IntelliSense uvádějící možnost odvodit je vypnuto

Technologie IntelliSense zobrazit prohlášení.

[!POZNÁMKA]

Pokud je proměnná deklarována jako Object, změnit typ spuštění je program spuštěn.Visual Basicprovádí operace se nazývá boxerská a na volné určení k převodu mezi Object a typ hodnoty, které umožňuje spuštění pomalejší.Informace o boxu a unboxing Specifikace jazyka Visual Basic.

Odvození typu se vztahuje na úrovni procedury a neplatí mimo proceduru v třídu, strukturu, modulu nebo rozhraní.

Další informace naleznete v tématu Místní odvození typu (Visual Basic).

Při odvození možnost příkazu není k dispozici

Pokud neobsahuje zdrojový kód Option Infer prohlášení, Možnost odvodit nastavení Kompilace stránky projektu Designer (Visual Basic) se používá.Pokud je použit kompilátoru příkazového řádku, /optioninfer je použita možnost kompilátoru.

Nastavte možnost odvodit v IDE

  1. V Aplikaci Solution Explorer, vyberte projekt.V nabídce Projekt klikněte na Vlastnosti.Další informace naleznete v tématu Úvod k Návrháři projektu.

  2. Klikněte na kartu Kompilovat.

  3. Nastavte hodnotu v možnost odvodit pole.

Při vytvoření nového projektu Možnost odvodit nastavení kompilace kartě nastavena na hodnotu Možnost odvodit nastavení v Výchozí VB dialogové okno.Přístup VB výchozí v dialogovém okně pole Nástroje nabídky, klepněte na tlačítko Možnosti.V Možnosti dialogovém okně pole, rozbalte položku projektů a řešenía klepněte na tlačítko Výchozí VB.Počáteční výchozí nastavení v Výchozí VB je On.

Nastavte možnost odvodit na příkazovém řádku.

Výchozí datové typy a hodnoty

Následující tabulka popisuje výsledky různých kombinací určující typ dat a inicializační proceduru Dim prohlášení.

Zadaný typ dat?

Inicializátor určen?

Příklad

Výsledek

Ne

Ne

Dim qty

Pokud Option Strict je vypnuto (výchozí) je proměnná nastavena Nothing.

Pokud Option Strict je aktivní, dojde k chybě kompilace.

Ne

Ano

Dim qty = 5

Pokud Option Infer je na (výchozí) typ inicializátoru proměnné bere data.Viz téma Místní odvození typu (Visual Basic).

Pokud Option Infer je vypnuto a Option Strict je vypnuto, má proměnná typu dat Object.

Pokud Option Infer je vypnuto a Option Strict je aktivní, dojde k chybě kompilace.

Ano

Ne

Dim qty As Integer

Výchozí hodnota pro typ dat je inicializována proměnná.Další informace naleznete v tématu Dim prohlášení (Visual Basic).

Ano

Ano

Dim qty As Integer = 5

Datový typ inicializátor není převoditelná na zadaný typ, dojde k chybě kompilace.

Příklad

Následující příklady ukazují, jak se Option Infer prohlášení umožňuje odvození typu místní.

' 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

Následující příklad ukazuje, že typ spuštění se liší v případě, že proměnná je identifikován 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

Viz také

Referenční dokumentace

Dim prohlášení (Visual Basic)

Možnost porovnat prohlášení

Možnost výslovné prohlášení (Visual Basic)

Možnost přísné prohlášení

Dialogové okno Možnosti výchozí projekty jazyka Visual Basic

/optioninfer

Boxing a Unboxing (C# programování Guide)

Koncepty

Místní odvození typu (Visual Basic)