Visual Basic .NET Language
Opzione Inferiore
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 comeObject
.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:Opzione Inferiore
Il compilatore genererà un errore (conOption Strict On
)
o considereràq
comeobject
tipo (conOption 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