C#var
キーワードに相当するVB.NETはありますか?
LINQクエリの結果を取得するために使用したいと思います。
Option Infer は、これが適切に機能するためにonでなければなりません。その場合、VB.NET(Visual Basic 9)で型を省略すると、変数が暗黙的に入力されます。
これはnot VB.NETの以前のバージョンの「Option Strict Off」と同じです。変数はis強く型付けされています。 (C#var
のように)キーワードで暗黙的に行われただけです。
Dim foo = "foo"
foo
はString
として宣言されます。
Option Infer On
が必要で、Dim
キーワードを使用するだけです。
Dim query = From x In y Where x.z = w Select x
他のいくつかの答えとは反対に、あなたはしませんOption Strict On
は必要ありません。
VS IDEを使用している場合は、変数名にカーソルを合わせることができますが、コンパイル時のタイプの変数を取得するには(GetType(variableName)
はコンパイルされません-"Type '<variablename>'は定義されていません。」-VarType(variable)
は、実際にはVBバージョンのvariable.GetType()
であり、実行時に変数に格納されたインスタンスのタイプを返します)
Function MyVarType(Of T)(ByRef Var As T) As Type
Return GetType(T)
End Function
詳細に:
Dim
なし:
Explicit Off
、与えるObject
Explicit On
、エラー「名前 ''は宣言されていません。」
Dim
で:
Infer On
、予想されるタイプを提供しますInfer Off
:
Strict On
、エラー「Option Strict Onではすべての宣言に「As」クラスが必要です。」
Strict Off
、与えるObject
コメントで述べたように、 他の理由Option Strict On
がLinqのパフォーマンスを向上させる理由があります。具体的には、いくつかの回避策がありますが、Into Max(Anon.SomeString)
をOption Strict Off
と連携させることはできません。
型なしで従来のDim
キーワードを使用するだけです。
最小限の作業例:
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