如何在VB.NET中行内声明数组

60

我正在寻找VB.NET的等效代码:

var strings = new string[] {"abc", "def", "ghi"};
6个回答

82
Dim strings() As String = {"abc", "def", "ghi"}

不太确定我是否喜欢在变量名上使用数组指示器,这与常规惯例相反,尤其是在其他语言中。 - ganjeii
@ganjeii 不是所有的语言都是这样的:比如C,但在这种情况下更重要的是VBA,只接受这种数组声明语法。 - joH1
请注意,如下一个答案所示,这两个是等价的:Dim strings() As String Dim strings As String() - Shaggie

46

已经有很多正确的答案了,但这里提供一个“授人以渔”的版本。

首先在C#中创建一个小型控制台应用程序:

class Test
{
    static void Main()
    {
        var strings = new string[] {"abc", "def", "ghi"};
    }
}

保留调试信息编译:

csc /debug+ Test.cs

在它上面运行Reflector,并打开Main方法-然后反编译为VB。你最终得到:

Private Shared Sub Main()
    Dim strings As String() = New String() { "abc", "def", "ghi" }
End Sub

所以我们得到了相同的答案,但并不需要真正了解VB。这种方法并不总是适用的,还有许多其他的转换工具可用,但这是一个很好的开始。作为首选方案一定值得尝试。


11
我同意 Reflector 应该是每个 .NET 开发者的必备工具之一。但为了这个目的,使用 http://converter.telerik.com/ 上的在线转换器会更简单。 - Jesper Palm
这对于指定{Nothing}String数组或基本上任何其他类型的数组非常有用,而不是Object数组,在某些特定情况下如果您在内容之前不包含New String(),编译器将会默认它。 - Panzercrisis

10
在支持类型推断的新版本VB.NET中,这个更短的版本也可以工作:
Dim strings = {"abc", "def", "ghi"}

6
Dim strings As String() = New String() {"abc", "def", "ghi"}

5
啊,这确实帮助我在函数中传递了一个内联声明: MyFunction(somestring, New String() {"abc", "def", "ghi"}) - Ben McIntyre

5

4

Dim strings As String() = {"abc", "def", "ghi"}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接