VB.Net动态初始化数组

7

我写了这个非常简单的函数,然后想知道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个回答

18

不做的任何理由:

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

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

我刚刚查看了一下,VB 9 也有隐式类型数组

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

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

非常好,第一个例子正是我要找的。谢谢。 - Binary Worrier
2
我认为我们都可以达成共识,这里最重要的是“Han”的正确拼写 :) - Andy
@Andy 错了,应该是它们出现的顺序... 应该是 "卢克","汉",然后是 "莱娅"... 因为我们都知道汉和莱娅应该更亲近,而不是被她的兄弟隔开 ;) - GoldBishop

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

2

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

1

微软建议采用以下格式

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

每个 http://msdn.microsoft.com/zh-cn/library/8k8021te(v=VS.80).aspx

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


这是由微软建议的显式声明格式。隐式格式是没有定义和假定类“Object”的。但是,如果您设置了“Option Explicit”,则必须在语句中定义“Object”。 - GoldBishop

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