【问题标题】:VB.Net Initialising an array on the flyVB.Net 动态初始化数组
【发布时间】:2009-03-12 11:27:57
【问题描述】:

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

有什么想法吗?

【问题讨论】:

    标签: vb.net arrays


    【解决方案1】:

    任何不做的理由:

    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 的新内容。)

    【讨论】:

    • 非常好,第一个例子正是我想要的。谢谢。
    • 我想我们都可以同意,这里最重要的是“汉”的正确拼写:)
    • @Andy 错了,它们出现的顺序……应该是“Luke”,“Han”,然后是“Leia”……因为我们都知道 Han 和Leia 更紧密地联系在一起,没有被她的兄弟分开;)
    【解决方案2】:
    Dim somenames() As String = {"hello", "world"}
    

    【讨论】:

      【解决方案3】:

      以下代码将在 VB 10 中工作:

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

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

      【讨论】:

        【解决方案4】:
        PrintNames(New String(){"Hans", "Luke", "Lia"})
        

        【讨论】:

          【解决方案5】:

          微软推荐以下格式

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

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

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

          【讨论】:

          • 这是显式声明格式,由 MS 建议。隐含的格式没有定义和假定类Object。但是,如果您设置了Option Explicit,那么您必须在语句中定义Object
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-27
          • 2016-06-13
          • 1970-01-01
          • 2020-12-04
          • 2013-04-11
          相关资源
          最近更新 更多