Option Infer – příkaz
Umožňuje použití odvození místní typu v deklaraci proměnné.
Option Infer { On | Off }
Součásti
Termín |
Definice |
On |
Volitelné.Umožňuje odvození místní typu. |
Off |
Volitelné.Zakáže odvození místní typu. |
Poznámky
Chcete-li nastavit Option Infer v souboru, zadejte Option Infer On nebo Option Infer Off v horní části souboru, před jiné zdrojový kód.Je-li nastavena hodnota pro Option Infer v souboru konflikty s hodnotou v prostředí IDE nebo na příkazovém řádku, hodnota v konfiguračním souboru má přednost.
Pokud nastavíte Option Infer k On, místní proměnné můžete deklarovat bez explicitně s informacemi o tom datovým typem.Kompilátor odvodí datový typ pro proměnnou z typu jeho inicializace výrazu.
Na následujícím obrázku Option Infer zapnutý.Proměnné v deklaraci Dim someVar = 2 je deklarován jako celé číslo odvození typu.
Technologie IntelliSense při odvození možnost zapnuté
Na následujícím obrázku Option Infer je vypnuta.Proměnné v deklaraci Dim someVar = 2 je deklarován jako Object podle odvození typu.V tomto příkladu možnost Strict je nastavena na vypnout na Stránka Kompilovat, návrhář projektu (Visual Basic).
Technologie IntelliSense, pokud možnost odvození je vypnuto
[!POZNÁMKA]
Pokud je proměnná deklarována jako Object, typu běhu můžete změnit při spuštění programu.Visual Basicprovádí operace volá zabalení a rozbalení k převodu mezi Object a typ hodnoty, což usnadňuje provádění nižší.Informace o zabalení a rozbalení naleznete v tématu Specifikace jazyka Visual Basic.
Odvození typu se vztahuje na úrovni postupu a nevztahuje mimo proceduru v třídě, struktury, modulu nebo rozhraní.
Další informace naleznete v tématu Odvození místního typu (Visual Basic).
Při odvození možnost prohlášení není k dispozici
Pokud zdrojový kód neobsahuje Option Infer prohlášení, možnost odvození nastavení na Stránka Kompilovat, návrhář projektu (Visual Basic) se používá.Pokud je použit kompilátoru příkazového řádku, /optioninfer se používá možnost kompilátoru.
Chcete-li nastavena možnost odvození v integrovaném vývojovém prostředí
V Průzkumníka řešení, vyberte projekt.Na projektu nabídky, klikněte na tlačítko vlastnosti.Další informace naleznete v tématu Introduction to the Project Designer.
Klikněte na tlačítko zkompilovat karty.
Nastavte hodnotu v možnost odvození pole.
Když vytvoříte nový projekt, možnost odvození nastavení na zkompilovat kartu je nastaven na možnost odvození nastavení v ve výchozím nastavení jazyka Visual Basic dialogového okna.Pro přístup k ve výchozím nastavení jazyka Visual Basic dialogovém na nástroje nabídky, klikněte na tlačítko možnosti.V možnosti dialogové okno rozbalte projekty a řešenía potom klikněte na tlačítko ve výchozím nastavení jazyka Visual Basic.Počáteční výchozí nastavení v výchozí nastavení jazyka Visual Basic je On.
Chcete-li nastavena možnost odvození na příkazovém řádku
- Zahrnout /optioninfer možnosti kompilátoru v vbc příkazu.
Výchozí Data typů a hodnot
Následující tabulka popisuje výsledky různých kombinací určující datový typ a inicializátoru v Dim prohlášení.
Zadaný typ dat? |
Inicializátoru zadán? |
Příklad |
Výsledek |
Ne |
Ne |
Dim qty |
Pokud Option Strict je vypnuto (výchozí), je proměnná nastavena na Nothing. Pokud Option Strict je aktivní, dojde k chybě při kompilaci. |
Ne |
Ano |
Dim qty = 5 |
Pokud Option Infer je na (výchozí), je inicializace typ proměnné přijímá data.Další informace naleznete v tématu Odvození místního typu (Visual Basic). Pokud Option Infer je vypnuto a Option Strict je vypnuta, proměnné přebírá datový typ Object. Pokud Option Infer je vypnuto a Option Strict je aktivní, dojde k chybě při kompilaci. |
Ano |
Ne |
Dim qty As Integer |
Proměnná je inicializován na výchozí hodnotu pro datový typ.Další informace naleznete v tématu Dim – příkaz (Visual Basic). |
Ano |
Ano |
Dim qty As Integer = 5 |
Pokud datový typ je inicializace není převést na zadaný datový typ, dojde k chybě při kompilaci. |
Příklad
Následující příklady ukazují, jak Option Infer umožňuje prohlášení odvození místní typu.
' 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 typu běhu se může lišit při proměnnou, je označena 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
Option Explicit – příkaz (Visual Basic)
Výchozí možnosti jazyka Visual Basic, projekty, dialogové okno Možnosti
Zabalení a rozbalení (Průvodce programováním v C#)