var
C#キーワードに相当するVB.NETはありますか?
これを使用して、LINQクエリの結果を取得したいと思います。
これが正しく機能するためには、オプション推論がオンになっている必要があります。その場合、VB.NET(Visual Basic 9)で型を省略すると、変数が暗黙的に型指定されます。
これは、変数が強く型付けされているため、以前のバージョンのVB.NETの「OptionStrictOff」と同じではありません。これは、(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)
コンパイルされません - 「型 '<変数名>' は定義されていません。」) -VarType(variable)
実際には、variable.GetType()
実行時に変数に格納されたインスタンスの型を返すVB バージョン) 私が使用したもの:
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
コメントで述べたように、Linq がより便利に機能する理由は他にもあります。具体的には、いくつかの回避策がありますOption Strict On
が、 を使用することはできません。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
この例では、オブジェクトが機能しました
C#
JToken projects = client.Search(ObjCode.PROJECT, new { groupID = userGroupID });
foreach( var j in projects["data"].Children()) {
Debug.WriteLine("Name: {0}", j.Value<string>("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