如何:在 Visual Basic 中初始化数组变量
通过在 New
子句中包含数组字面量并指定数组的初始值来初始化数组变量。 可以指定类型,也可以允许从数组字面量中的值推断。 有关如何推断类型的详细信息,请参阅数组中的“使用初始值填充数组”。
使用数组字面量初始化数组变量
在
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
。下面的示例循环访问多维数组。 在用 Visual Basic 编写的 Windows 控制台应用程序中,将代码粘贴到
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() {}}
下面的示例循环访问交错数组。 在用 Visual Basic 编写的 Windows 控制台应用程序中,将代码粘贴到
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