153

varC#キーワードに相当するVB.NETはありますか?

これを使用して、LINQクエリの結果を取得したいと思います。

4

4 に答える 4

150

これが正しく機能するためには、オプション推論がオンになっている必要があります。その場合、VB.NET(Visual Basic 9)で型を省略すると、変数が暗黙的に型指定されます。

これは、変数強く型付けされているため、以前のバージョンのVB.NETの「OptionStrictOff」と同じではありません。これは、(C#のように)暗黙的に行われるキーワードです。var

Dim foo = "foo"

fooとして宣言されますString

于 2010-03-19T15:42:06.617 に答える
45

したがって、キーワードが必要であり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

于 2010-03-22T01:04:32.827 に答える
17

タイプなしで従来の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
于 2010-03-19T15:44:48.080 に答える
-1

この例では、オブジェクトが機能しました

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
于 2012-01-18T20:48:05.743 に答える