VB.NET equivalente alla parola chiave C # var

Esiste un VB.NET equivalente alla parola chiave C # var ?

Mi piacerebbe usarlo per recuperare il risultato di una query LINQ.

L’opzione Infer deve essere triggers affinché funzioni correttamente. In tal caso, quindi omettendo il tipo in VB.NET (Visual Basic 9) verrà immessa la variabile in modo implicito.

Questo non è lo stesso di “Option Strict Off” nelle versioni precedenti di VB.NET, poiché la variabile è fortemente tipizzata; è fatto in modo implicito (come la parola chiave C # var ).

 Dim foo = "foo" 

foo è dichiarato come una String .

È necessario Option Infer On e quindi basta usare la parola chiave Dim , quindi:

 Dim query = From x In y Where xz = w Select x 

Contrariamente ad alcune delle altre risposte, non è necessario Option Strict On .

Se si sta utilizzando VS IDE, è ansible passare con il mouse sui nomi delle variabili, ma per ottenere i tipi di variabili in fase di compilazione ( GetType(variableName) non viene compilato – “Tipo” “non è definito.” – e VarType(variable) è in realtà solo la versione VB di variable.GetType() che restituisce il tipo dell’istanza memorizzata nella variabile in fase di esecuzione) Ho utilizzato:

 Function MyVarType(Of T)(ByRef Var As T) As Type Return GetType(T) End Function 

In dettaglio:

  • senza Dim :

    Explicit Off , dà Object

    Explicit On , l’errore “Nome” non è dichiarato. ”

  • con Dim :

    • Infer On , Infer On tipi previsti
    • Infer Off :

      Strict On , errore “Option Strict On richiede che tutte le dichiarazioni abbiano un ‘As’ clasue.”

      Strict Off , dà Object

Come ho menzionato nei commenti, ci sono altri motivi per cui Option Strict On consente a Linq di funzionare in modo più efficace. In particolare, non è ansible ottenere Into Max(Anon.SomeString) per lavorare con Option Strict Off , sebbene ci siano un certo numero di soluzioni alternative.

Usa semplicemente la parola chiave Dim convenzionale senza un tipo.

Esempio di lavoro minimo:

 Option Strict On ' Always a good idea Option Infer On ' Required for type inference Imports System Module MainModule Sub Main() Dim i = 42 Dim s = "Hello" Console.WriteLine("{0}, {1}", i.GetType(), s.GetType()) ' Prints System.Int32, System.String ' End Sub End Module 

L’object ha funzionato per me in questo esempio

C #

 JToken projects = client.Search(ObjCode.PROJECT, new { groupID = userGroupID }); foreach( var j in projects["data"].Children()) { Debug.WriteLine("Name: {0}", j.Value("name")); } 

VB

 Dim projects As JToken = client.Search(ObjCode.PROJECT, New With { _ Key .groupID = userGroupID _ }) For Each j As Object In projects("data").Children() Debug.WriteLine("Name: {0}", j.Value(Of String)("name")) Next