[C#] VB.NET等价于C#var关键字


Answers

您需要Option Infer On ,然后使用Dim关键字,因此:

Dim query = From x In y Where x.z = w Select x

与其他一些答案相反,您不需要Option Strict On

如果您使用的是VS IDE,则可以将鼠标悬停在变量名称上,但要获取编译时类型的变量( GetType(variableName)不会编译 - “类型'<variablename>'未定义。” VarType(variable)实际上就是VarType(variable)的VB版本VarType(variable) 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 ,但有许多解决方法。

Question

这个问题在这里已经有了答案:

是否有一个VB.NET等效于C# var关键字?

我想用它来检索LINQ查询的结果。




对象在这个例子中为我工作

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