次の方法で共有


方法: 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 からすべてのディメンションの上限までの各要素の値を含める必要があります。 次の例は、型の要素を持つ 2 次元配列を含む変数を宣言、作成、初期化するいくつかの方法を示しています 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)を持つ 6 つの初期化された要素が含まれます。 各配列の場所には、 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
    

配列リテラルを使用してジャグ配列変数を初期化するには

  • オブジェクト値を中かっこ ({}) 内に入れ子にします。 異なる長さの配列を指定する配列リテラルを入れ子にすることもできますが、ジャグ配列の場合は、入れ子になった配列リテラルがかっこ (()) で囲まれていることを確認してください。 かっこは入れ子になった配列リテラルの評価を強制し、結果の配列はジャグ配列の初期値として使用されます。 次のコード例は、ジャグ配列初期化の 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 で記述された 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
    

こちらも参照ください