相当于 C # var 关键字的 VB.NET

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

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

99159 次浏览

选项 Infer 必须是 开始,这样才能正常工作。如果是,那么在 VB.NET (VisualBasic9)中省略类型将隐式地输入变量。

这个 没有与以前版本的 VB.NET 中的“ OptionStrictOff”相同,都是变量 强类型的; 它只是隐式地这样做了(就像 C # var)关键字。

Dim foo = "foo"

foo被声明为 String

简单地使用传统的 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

你需要 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)实际上只是 variable.GetType()的 VB 版本,返回运行时存储在变量中的实例类型)我用:

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

详情如下:

  • 没有 Dim:

    Explicit Off给出 Object

    Explicit On,未声明错误“ Name”

  • Dim合作:

    • Infer On,给出期望类型
    • 返回文章页面

      “ OptionStrictOn 要求所有声明都具有‘ As’类。”

      Strict Off给出 Object

正如我在评论中提到的,其他原因解释了为什么 Option Strict On允许 Linq 执行得更有用。具体来说,您不能让 Into Max(Anon.SomeString)Option Strict Off一起工作,尽管有许多变通方法。

对象 在这个示例中对我很有用

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