Ricerca…


Che cos'è?

Abilita l'uso dell'inferenza di tipo locale nella dichiarazione delle variabili.

Cos'è l'inferenza di tipo?

È possibile dichiarare variabili locali senza dichiarare esplicitamente un tipo di dati. Il compilatore deduce il tipo di dati di una variabile dal tipo della sua espressione di inizializzazione.

Opzione Inferiore su :

Dim aString  = "1234" '--> Will be treated as String by the compiler
Dim aNumber  = 4711   '--> Will be treated as Integer by the compiler

vs. dichiarazione di tipo esplicita:

'State a type explicitly
Dim aString as String = "1234"
Dim aNumber as Integer = 4711

Opzione Inferiore Off:
Il comportamento del compilatore con Option Infer Off dipende dall'impostazione Option Strict che è già documentata qui .

  • Opzione Inferiore Off - Opzione Rimozione off
    Tutte le variabili senza dichiarazioni di tipo esplicite sono dichiarate come Object .

    Dim aString  = "1234" '--> Will be treated as Object by the compiler
    
  • Opzione Inferiore - Opzione Rigorosa
    Il compilatore non ti consente di dichiarare una variabile senza un tipo esplicito.

    'Dim aString  = "1234" '--> Will not compile due to missing type in declaration
    

Come abilitarlo / disabilitarlo

Livello di documento

È Option Infer On|Off per impostazione predefinita, ma è possibile impostarlo posizionando Option Infer On|Off nella parte superiore del file di codice. L'opzione si applicherà all'intero documento.

Livello del progetto

Puoi accenderlo / spegnerlo tramite il menu in Visual Studio:

Progetto> [Progetto] Proprietà> Scheda Compila> Inferiore opzione

Scegli On|Off nel menu a discesa. L'opzione si applicherà all'intero documento.

Tutti i nuovi progetti

Puoi attivarlo di default per tutti i nuovi progetti selezionando:

Strumenti> Opzioni> Progetti e soluzioni> Valori predefiniti VB> Opzione Inferiore

Scegli On|Off nel menu a discesa.

Quando utilizzare l'inferenza del tipo

Fondamentalmente è possibile utilizzare l'inferenza di tipo ogni volta che è possibile.
Tuttavia, fai attenzione quando combini Option Infer Off e Option Strict Off , in quanto ciò può portare a un comportamento di runtime indesiderato:

Dim someVar = 5
someVar.GetType.ToString() '--> System.Int32
someVar = "abc"
someVar.GetType.ToString() '--> System.String

Tipo anonimo
I tipi anonimi possono essere dichiarati solo con Option Infer On .
Sono spesso usati quando si ha a che fare con LINQ :

Dim countryCodes = New List(Of String)
countryCodes.Add("en-US")
countryCodes.Add("en-GB")
countryCodes.Add("de-DE")
countryCodes.Add("de-AT")

Dim q = From code In countryCodes
        Let split = code.Split("-"c)
        Select New With {.Language = split(0), .Country = split(1)}
  • Opzione Inferiore
    Il compilatore riconoscerà il tipo anonimo: Tipo anonimo - Opzione Inferiore

  • Opzione Inferiore
    Il compilatore genererà un errore (con Option Strict On )
    o considererà q come object tipo (con Option Strict Off ).
    Entrambi i casi produrranno il risultato che non è possibile utilizzare il tipo anonimo.


Doubles / decimali
Le variabili numeriche con cifre decimali verranno dedotte come Double per impostazione predefinita:

Dim aNumber = 44.11 '--> Will be treated as type `Double` by the compiler

Se si desidera un altro tipo come Decimal il valore inizializzato della variabile deve essere contrassegnato:

Dim mDecimal = 47.11D '--> Will be treated as type `Decimal` by the compiler


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow