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
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
[!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
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.
Klikněte na kartu Kompilovat.
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.
- Zahrnout /optioninfer volba kompilátoru v vbc příkaz.
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
Možnost výslovné prohlášení (Visual Basic)
Dialogové okno Možnosti výchozí projekty jazyka Visual Basic
Boxing a Unboxing (C# programování Guide)