VB.NET 2次元配列の使い方 初期化 要素数

今回は、2次元配列を使ってみましょう。

2次元配列の基本的な使い方

Sub Main()
    Dim array(1, 4) As Integer
    Dim x As Integer = 0
    Dim y As Integer = 0

    array(0, 0) = 1
    array(0, 1) = 2
    array(0, 2) = 3
    array(0, 3) = 4
    array(0, 4) = 5

    array(1, 0) = 10
    array(1, 1) = 20
    array(1, 2) = 30
    array(1, 3) = 40
    array(1, 4) = 50

    For x = 0 To 1
        For y = 0 To 4
            System.Console.WriteLine("配列変数array({0},{1}) = {2}です",
                x, y, array(x, y))
        Next y
    Next x
End Sub

プログラムを実行すると以下のようになります。

配列変数array(0,0) = 1です
配列変数array(0,1) = 2です
配列変数array(0,2) = 3です
配列変数array(0,3) = 4です
配列変数array(0,4) = 5です
配列変数array(1,0) = 10です
配列変数array(1,1) = 20です
配列変数array(1,2) = 30です
配列変数array(1,3) = 40です
配列変数array(1,4) = 50です

Dim array(1, 4) As Integer で2次元配列を宣言します。

()カッコで区切り、1次元目と、2次元目の要素数を指定します。

そして、それぞれの要素に値を代入し、
順番に表示していきます。

2つのループを使う事で効率的に2次元配列のデータを処理しています。

確保される要素数に注意

配列の要素数は (1,4) と記述していますが、
実際に確保されるのは、
「0から1までの2要素」「0から4までの5要素」となります。

「1要素」と「4要素」ではありませんので、
十分注意する必要があります。


(2, 3) と書くと、
「0から2までの3要素」と「0から3の4要素」が確保されます。

(5, 10) と書くと、
「0から5までの6要素」と「0から10の11要素」が確保されます。

あとは、配列の各要素にデータを格納して、順番に表示しています。

宣言と同時に初期化

Sub Main()
    Dim array(,) As Integer = {{1, 2, 3, 4, 5}, {10, 20, 30, 40, 50}}
    Dim x As Integer = 0
    Dim y As Integer = 0

    For x = 0 To 1
        For y = 0 To 4
            System.Console.WriteLine("配列変数array({0},{1}) = {2}です",
                x, y, array(x, y))
        Next y
    Next x
End Sub
配列変数array(0,0) = 1です
配列変数array(0,1) = 2です
配列変数array(0,2) = 3です
配列変数array(0,3) = 4です
配列変数array(0,4) = 5です
配列変数array(1,0) = 10です
配列変数array(1,1) = 20です
配列変数array(1,2) = 30です
配列変数array(1,3) = 40です
配列変数array(1,4) = 50です

2次元配列は、宣言と同時に初期化する事ができます。

初期化する場合は、要素数を指定せずに、{}を使って記述します。

記述したデータの分だけ領域が自動的に確保されます。

要素数を記述すると、コンパイルエラーとなります。

スポンサーリンク

String型(文字列型)の2次元配列

扱うデータ型がString型になっても処理内容は特に変わりません。

Sub Main()
    Dim str(1, 3) As String
    Dim x As Integer = 0
    Dim y As Integer = 0

    str(0, 0) = "AAA"
    str(0, 1) = "BBB"
    str(0, 2) = "CCC"
    str(0, 3) = "DDD"

    str(1, 0) = "みかん"
    str(1, 1) = "オレンジ"
    str(1, 2) = "りんご"
    str(1, 3) = "スイカ"

    For x = 0 To 1
        For y = 0 To 3
            System.Console.WriteLine("配列変数str({0},{1}) = {2}です",
                x, y, str(x, y))
        Next y
    Next x
End Sub
配列変数str(0,0) = AAAです
配列変数str(0,1) = BBBです
配列変数str(0,2) = CCCです
配列変数str(0,3) = DDDです
配列変数str(1,0) = みかんです
配列変数str(1,1) = オレンジです
配列変数str(1,2) = りんごです
配列変数str(1,3) = スイカです

特に説明はいらないでしょう。

String型(文字列型)の初期化

Sub Main()
    Dim str(,) As String = {{"AAA", "BBB", "CCC", "DDD"}, {"みかん", "オレンジ", "りんご", "スイカ"}}
    Dim x As Integer = 0
    Dim y As Integer = 0

    For x = 0 To 1
        For y = 0 To 3
            System.Console.WriteLine("配列変数str({0},{1}) = {2}です",
                x, y, str(x, y))
        Next y
    Next x
End Sub
配列変数str(0,0) = AAAです
配列変数str(0,1) = BBBです
配列変数str(0,2) = CCCです
配列変数str(0,3) = DDDです
配列変数str(1,0) = みかんです
配列変数str(1,1) = オレンジです
配列変数str(1,2) = りんごです
配列変数str(1,3) = スイカです

初期化についても特に注意するところはありませんが、
初期化するデータが多い時は、見やすくするために、
1行ごとに改行しながら記述すると良いでしょう。

Dim str(,) As String = {
           {"AAA", "BBB", "CCC", "DDD"},
           {"みかん", "オレンジ", "りんご", "スイカ"}}

以上、2次元配列の簡単な使い方でした。