如何:在 Visual Basic 中初始化陣列變數
若要使用陣列常值,也就是說,當您建立時,您可以填入初始值的陣列。 您可以將陣列常值當做 New 子句的一部分並指定型別或允許它從陣列常值中的值來推斷。 如需型別如何運作的詳細資訊推斷,請參閱 < 填入初始值的陣列上的 Visual Basic 中的陣列。
若要使用陣列常值初始化陣列變數
在 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 Console Application中,貼在 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
若要使用陣列常值初始化不規則陣列變數
在大括號 ({}) 內巢狀化物件值。 雖然您也可以巢狀化用於指定不同長度陣列的陣列常值,但在不規則陣列 (Jagged Array) 的案例中,請確認巢狀陣列常值是以括號 (()) 括住的。 括號會強制評估巢狀陣列常值,而產生的陣列就會用來做為不規則陣列的初始值。 下列程式碼範例會顯示 2 個不規則陣列初始化範例。
' 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() {}}
下列範例會藉由不規則陣列逐一查看。 貼在 Sub Main()方法中的程式碼在 Visual Basic Console Application。 在程式碼指示的註解哪些輸出應該是。
' 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