Option Infer Utasítás
Engedélyezi a helyi típusú következtetés használatát a változók deklarálásában.
Syntax
Option Infer { On | Off }
Részek
Időszak | Definíció |
---|---|
On |
Opcionális. Engedélyezi a helyi típusú következtetést. |
Off |
Opcionális. Letiltja a helyi típusú következtetést. |
Megjegyzések
Ha be szeretne állítani Option Infer
egy fájlt, írja be Option Infer On
vagy Option Infer Off
a fájl tetején, bármely más forráskód előtt. Ha egy fájlban megadott Option Infer
érték ütközik az IDE-ben vagy a parancssorban beállított értékkel, a fájlban lévő érték elsőbbséget élvez.
Ha be On
van állítvaOption Infer
, deklarálhatja a helyi változókat anélkül, hogy kifejezetten meg kell adnia egy adattípust. A fordító egy változó adattípusát az inicializálási kifejezés típusából következteti.
Az alábbi ábrán Option Infer
be van kapcsolva. A deklaráció Dim someVar = 2
változója egész számként van deklarálva típuskövetkezési adatok alapján.
Az alábbi képernyőképen az IntelliSense látható, amikor az Option Infer be van kapcsolva:
Az alábbi ábrán Option Infer
ki van kapcsolva. A deklaráció Dim someVar = 2
változója típus szerinti következtetésként Object
van deklarálva. Ebben a példában a Beállítás szigorú beállítása ki van kapcsolva a Fordítás lapon, a Project Tervező (Visual Basic).
Az alábbi képernyőképen az IntelliSense látható, ha az Option Infer ki van kapcsolva:
Feljegyzés
Ha egy változót deklarál egy Object
változóként, a futási idő típusa változhat, amíg a program fut. A Visual Basic boxing és unboxing nevű műveleteket hajt végre egy és egy Object
értéktípus közötti konvertáláshoz, ami lassabbá teszi a végrehajtást. A dobozolásról és a dobozolás megszüntetéséről a Visual Basic Language Specification (Visual Basic Language Specification) című témakörben olvashat bővebben.
A típuskövetkeztetés az eljárás szintjén érvényes, és nem vonatkozik az osztályban, struktúrában, modulban vagy interfészben lévő eljáráson kívülre.
További információ: Helyi típus következtetése.
Ha egy lehetőségkikövetkozó utasítás nem jelenik meg
Ha a forráskód nem tartalmaz utasítástOption Infer
, a Program a Fordítás lapon a Project Tervező (Visual Basic) beállítását használja. A parancssori fordító használata esetén a -optioninfer fordítót használja a rendszer.
Beállítási következtetés beállítása az IDE-ben
A Megoldáskezelő válasszon ki egy projektet. A Projekt menüben kattintson a Tulajdonságok elemre.
Kattintson a Fordítás fülre.
Állítsa be az értéket az Option infer mezőben.
Amikor új projektet hoz létre, a Fordítás lapon a Beállítási következtetés beállítás a VB Alapértelmezések párbeszédpanelén az Option Infer (Beállítási következtetés) beállításra van állítva. A VB Alapértelmezések párbeszédpanelének eléréséhez kattintson az Eszközök menü Beállítások gombjára. A Beállítások párbeszédpanelen bontsa ki a Projektek és megoldások elemet, majd kattintson a VB Alapértelmezések parancsára. A VB Alapértelmezett értékének kezdeti alapértelmezett beállítása a következőOn
: .
Beállítási következtetés beállítása a parancssorban
Adja meg a -optioninfer fordítót a vbc parancsban.
Alapértelmezett adattípusok és értékek
Az alábbi táblázat az adattípus és az inicializáló Dim
utasítás különböző kombinációinak eredményeit ismerteti.
Adattípus megadva? | Inicializáló van megadva? | Példa | Eredmény |
---|---|---|---|
Nem | Nem | Dim qty |
Ha Option Strict ki van kapcsolva (az alapértelmezett), a változó Nothing értéke .Ha Option Strict be van kapcsolva, fordítási időhiba lép fel. |
Nem | Igen | Dim qty = 5 |
Ha Option Infer be van kapcsolva (az alapértelmezett), a változó az inicializáló adattípusát veszi fel. Lásd: Helyi típus következtetése.Ha Option Infer ki van kapcsolva, és Option Strict ki van kapcsolva, a változó a következő adattípust Object veszi fel: .Ha Option Infer ki van kapcsolva, és Option Strict be van kapcsolva, fordítási időhiba lép fel. |
Igen | Nem | Dim qty As Integer |
A változó inicializálása az adattípus alapértelmezett értékére történik. További információ: Dim Utasítás. |
Igen | Igen | Dim qty As Integer = 5 |
Ha az inicializáló adattípusa nem konvertálható a megadott adattípusra, fordítási időhiba lép fel. |
1. példa
Az alábbi példák azt mutatják be, hogy az utasítás hogyan teszi lehetővé a Option Infer
helyi típusú következtetést.
' 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
2. példa
Az alábbi példa azt mutatja be, hogy a futási idő típusa eltérhet, ha egy változót egy változóként Object
azonosít.
' 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
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: