Share via


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 Onvan á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:

Screenshot showing IntelliSense view when Option Infer is on.

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:

Screenshot showing IntelliSense view when Option Infer is off.

Feljegyzés

Ha egy változót deklarál egy Objectvá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

  1. A Megoldáskezelő válasszon ki egy projektet. A Projekt menüben kattintson a Tulajdonságok elemre.

  2. Kattintson a Fordítás fülre.

  3. Á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 Objectveszi 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 Objectazonosí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