如何:在 Visual Basic 中初始化数组变量

在 子句中包括数组文本并指定数组的初始值,可以 New 初始化数组变量。 可以指定类型,也可以允许从数组文本中的值推断类型。 有关如何推断类型的信息,请参阅 Arrays 中的"使用初始值填充数组"。

使用数组文本初始化数组变量

  • 在 子句中或在分配数组值时,提供大括号内的元素值 New {} () 。 以下示例演示声明、创建和初始化变量以包含具有 类型元素的数组的多种方式 Char

    ' The following five lines of code create the same array.
    ' Preferred syntaxes are on the lines with chars1 and chars2.
    Dim chars1 = {"%"c, "&"c, "@"c}
    Dim chars2 As Char() = {"%"c, "&"c, "@"c}
    
    Dim chars3() As Char = {"%"c, "&"c, "@"c}
    Dim chars4 As Char() = New Char(2) {"%"c, "&"c, "@"c}
    Dim chars5() As Char = New Char(2) {"%"c, "&"c, "@"c}
    

    执行每个语句后,创建的数组的长度为 3,索引 0 到索引 2 处的元素包含初始值。 如果同时提供上限和值,则必须包括索引 0 到上限中每个元素的值。

    请注意,如果在数组文本中提供元素值,则不需要指定索引上限。 如果未指定上限,则根据数组文本中的值数推断数组的大小。

使用数组文本初始化多维数组变量

  • 将值嵌套在大括号 () {} 括号内。 确保嵌套数组全部推断为相同类型和长度的数组。 下面的代码示例演示了多维数组初始化的几个示例。

    Dim numbers = {{1, 2}, {3, 4}, {5, 6}}
    Dim customerData = {{"City Power & Light", "http://www.cpandl.com/"},
                        {"Wide World Importers", "http://wideworldimporters.com"},
                        {"Lucerne Publishing", "http://www.lucernepublishing.com"}}
    
    ' You can nest array literals to create arrays that have more than two 
    ' dimensions.
    Dim twoSidedCube = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}
    
  • 可以显式指定数组边界,也可以将其排除,让编译器根据数组文本中的值推断数组边界。 如果同时提供上限和值,则必须包含索引 0 到每个维度中上限内每个元素的值。 以下示例演示声明、创建和初始化变量以包含具有 类型元素的二维数组的多种方式 Short

    ' The following five lines of code create the same array.
    ' Preferred syntaxes are on the lines with scores1 and scores2.
    Dim scores1 = {{10S, 10S, 10S}, {10S, 10S, 10S}}
    Dim scores2 As Short(,) = {{10, 10, 10}, {10, 10, 10}}
    
    Dim scores3(,) As Short = {{10, 10, 10}, {10, 10, 10}}
    Dim scores4 As Short(,) = New Short(1, 2) {{10, 10, 10}, {10, 10, 10}}
    Dim scores5(,) As Short = New Short(1, 2) {{10, 10, 10}, {10, 10, 10}}
    

    执行每个语句后,创建的数组包含具有索引 、 和 的六个初始化 (0,0) (0,1) (0,2) (1,0) (1,1) 元素 (1,2) 。 每个数组位置都包含值 10

  • 以下示例将浏览多维数组。 在Windows中编写的控制台Visual Basic,将代码粘贴到 Sub Main() 方法中。 最后一个注释显示输出。

    Dim numbers = {{1, 2}, {3, 4}, {5, 6}}
    
    ' Iterate through the array.
    For index0 = 0 To numbers.GetUpperBound(0)
        For index1 = 0 To numbers.GetUpperBound(1)
            Debug.Write(numbers(index0, index1).ToString & " ")
        Next
        Debug.WriteLine("")
    Next
    ' Output
    '  1 2
    '  3 4
    '  5 6
    

使用数组文本初始化锯齿数组变量

  • 将对象值嵌套在 {} () 。 尽管还可以嵌套指定不同长度数组的数组文本,但对于锯齿数组,请确保嵌套数组文本括在括号中 () () 。 括号强制计算嵌套数组文本,生成的数组用作锯齿数组的初始值。 下面的代码示例演示了两个使用锯齿数组初始化的示例。

    ' Create a jagged array of arrays that have different lengths.
    Dim jaggedNumbers = {({1, 2, 3}), ({4, 5}), ({6}), ({7})}
    
    ' Create a jagged array of Byte arrays.
    Dim images = {New Byte() {}, New Byte() {}, New Byte() {}}
    
  • 以下示例将浏览一个锯齿数组。 在Windows中编写的控制台Visual Basic,将代码粘贴到 Sub Main() 方法中。 代码中的最后一个注释显示输出。

    ' Create a jagged array of arrays that have different lengths.
    Dim jaggedNumbers = {({1, 2, 3}), ({4, 5}), ({6}), ({7})}
    
    For indexA = 0 To jaggedNumbers.Length - 1
        For indexB = 0 To jaggedNumbers(indexA).Length - 1
            Debug.Write(jaggedNumbers(indexA)(indexB) & " ")
        Next
        Debug.WriteLine("")
    Next
    
    ' Output:
    '  1 2 3 
    '  4 5 
    '  6
    '  7
    

请参阅