VB.Net即时初始化数组

时间:2009-03-12 11:27:57

标签: vb.net arrays

我写了这个 - 非常简单 - 函数,然后想知道VB是否有一些预先构建的功能来执行此操作,但找不到任何特定的功能。

Private Shared Function MakeArray(Of T)(ByVal ParamArray args() As T) As T()
    Return args
End Function

不像

那样使用
Dim someNames() as string = MakeArray("Hans", "Luke", "Lia")

因为这可以用

完成
Dim someNames() as string = {"Hans", "Luke", "Lia"}

但更像是

public sub PrintNames(names() as string)
   // print each name
End Sub

PrintNames(MakeArray("Hans", "Luke", "Lia"))

有什么想法吗?

5 个答案:

答案 0 :(得分:16)

任何不做的理由:

Dim someNames() as string = New String()("Han", "Luke", "Leia")

唯一的区别是类型推断,据我所知。

我刚检查过,VB 9也有implicitly typed arrays

Dim someNames() as string = { "Han", "Luke", "Leia" }

(据我所知,这在VB 8中不起作用,但是显式版本会。隐式版本对于匿名类型是必需的,这对于VB 9来说也是新的。)

答案 1 :(得分:6)

Dim somenames() As String = {"hello", "world"}

答案 2 :(得分:2)

以下代码适用于VB 10:

Dim someNames = {"Hans", "Luke", "Lia"} 

http://msdn.microsoft.com/en-us/library/ee336123.aspx

答案 3 :(得分:1)

PrintNames(New String(){"Hans", "Luke", "Lia"})

答案 4 :(得分:1)

Microsoft建议使用以下格式

Dim mixedTypes As Object() = New Object() {item1, item2, itemn}

http://msdn.microsoft.com/en-US/library/8k8021te(v=VS.80).aspx

注意,您不必指定新数组的大小,因为这是从初始化的args数量推断出来的。如果确实要指定长度,则不要指定“长度”,而是指定数组中最后一个空格的索引号。即。新对象(2){0,1,2}'注3 args。