方法: 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}
各ステートメントの実行後、作成した配列に初期値を含むインデックス 0 からインデックス 2 の要素と 3 の長さがあります。上限および値の両方を指定した場合、インデックス 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 型の要素を持つ 2 次元配列を含めるいくつかの方法を次の例に示します。
' 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)を持つ 6 個の初期化要素が含まれます。配列のそれぞれの位置には値 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
配列リテラルを使用してジャグ配列変数を初期化するには
中かっこ ({}) で囲んだオブジェクトの値を入れ子にします。ジャグ配列の場合、長さが異なる配列を指定する配列リテラルを入れ子にすることもできますが、入れ子になった配列リテラルがかっこ (()) で囲まれていることを確認してください。かっこで囲むことで、入れ子になった配列リテラルが強制的に評価され、結果の配列がジャグ配列の初期値として使用されるようになります。ジャグ配列を初期化する 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() {}}
次の例は、ジャグ配列を繰り返します。Visual Basic Console Applicationの 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