VB.NET 配列の仕組みと使い方のサンプル

VB.NETの配列の仕組みと使い方のサンプルです。

確認環境
・Microsoft Visual Studio Community 2019

目次

仕組み 配列とは
作成する 配列の宣言と同時に値を設定する(初期化)
  配列の要素の数を宣言して作成する
取得する 配列の値をFor文で取得する
更新する 配列の値を更新する
  配列のサイズを変更する(ReDimとPreserveの意味)
使用する メソッドの引数と戻り値が配列
  配列をリストに変換する
2次元 2次元配列を作成する

配列とは

配列の宣言と同時に値を設定する(初期化)

配列の宣言と同時に値を設定するサンプルです。

Module Module1
    Sub Main()
        Dim a() As String = {"赤", "黄", "青"} '配列
        Console.WriteLine(a(0)) '赤が出力される
        Console.WriteLine(a(1)) '黄が出力される
        Console.WriteLine(a(2)) '青が出力される

        Dim b = {"黒", "灰", "白"} '配列
        Console.WriteLine(b(0)) '黒が出力される
        Console.WriteLine(b(1)) '灰が出力される
        Console.WriteLine(b(2)) '白が出力される

        Dim c() As String = New String() {"A", "B", "C"} '配列
        Console.WriteLine(c(0)) 'Aが出力される
        Console.WriteLine(c(1)) 'Bが出力される
        Console.WriteLine(c(2)) 'Cが出力される
    End Sub
End Module

3行目は、リテラルで配列を作成しています。リテラルとはコード中に記述された値です。
4~6行目は、配列の各値を表示しています。

8行目は、型の指定をしていません。
13行目は、配列の前にNew Stringを使用しています。

配列の要素の数を宣言して作成する

配列の要素の数を宣言して作成するサンプルです。
値は後から追加します。

Module Module1
    Sub Main()
        Dim a(3) As String '配列

        a(0) = "赤"
        a(1) = "黄"
        a(2) = "青"
        a(3) = "オレンジ"
        'a(4) = "緑" 'インデックスが配列の境界外ですのエラー

        For Each b As String In a
            Console.WriteLine(b) '赤 黄 青 オレンジが出力される
        Next
    End Sub
End Module

3行目は、変数の後のかっこで3を指定しています。
その場合の要素は、5~8行目のようにインデックスは0から3までの4つ入ります
要素の数が3つではないので注意が必要です。

配列の値をFor文で取得する

配列の値をFor文で取得するサンプルです。

Module Module1
    Sub Main()
        Dim a() As String = {"赤", "黄", "青"} '配列

        For Each b As String In a
            Console.WriteLine(b) '赤 黄 青が出力される
        Next

        For i = 0 To a.Count - 1
            Console.WriteLine(a(i)) '赤 黄 青が出力される
        Next
    End Sub
End Module

5~7行目は、For Each文です。インデックスの値を使用せずに配列の各値を表示します。
9~11行目は、For文です。インデックスを使用して配列の各値を表示します。

配列の値を更新する

配列の値を更新するサンプルです。

Module Module1
    Sub Main()
        Dim a() As String = {"赤", "黄", "青"} '配列

        a(1) = "オレンジ"

        Console.WriteLine(a(0)) '赤が出力される
        Console.WriteLine(a(1)) 'オレンジが出力される
        Console.WriteLine(a(2)) '青が出力される
    End Sub
End Module

5行目は、3行目の配列のインデックスの1(黄)を指定しています。更新になり文字が置き換わります。

配列のサイズを変更する(ReDimとPreserveの意味)

配列のサイズを変更するサンプルです。

Step1.配列は最初に決められたサイズを超えて値の追加はできません。

Module Module1
    Sub Main()
        Dim ar1() As String = {"赤", "黄", "青"} '配列
        'ar1(3) = "オレンジ" 'System.IndexOutOfRangeException
    End Sub
End Module

4行目は、配列に新たな値を追加しようとしていますが、IndexOutOfRangeExceptionが発生して追加できません。

Step2.今度はRedimを追加してみます。

Module Module1
    Sub Main()
        Dim ar1() As String = {"赤", "黄", "青"} '配列
        ReDim ar1(3)
        ar1(3) = "オレンジ"
        For Each a In ar1
            Console.WriteLine(a) 'オレンジが出力される
        Next
    End Sub
End Module

4行目は、Redimと配列の数を再度宣言しています。
5行目は、配列に値を追加することが出来ました。
6行目からは、For Each文で配列の値を表示していますが、新たに追加したオレンジしか出力されません。最初に追加していた配列の値が4行目の時点で消えてしまいました

Step3.今度はRedimとPreserveを追加してい見ます。

Module Module1
    Sub Main()
        Dim ar1() As String = {"赤", "黄", "青"} '配列
        ReDim Preserve ar1(3)
        ar1(3) = "オレンジ"
        For Each a In ar1
            Console.WriteLine(a) '赤 黄 青 オレンジが出力される
        Next
    End Sub
End Module

4行目は、RedimとPreserveで配列の数を再度宣言しています。
6行目からは、For Each文で配列の値を表示していますが、今度は、消えていた値も表示されています。Preserveは値を保持する働きがあります。(Preserve=保存する)

メソッドの引数と戻り値が配列

メソッドの引数と戻り値が配列のサンプルです。

Module Module1
    Sub Main()
        Dim colors() As String = {"赤", "黄", "青"} '配列

        Dim c2() = GetColor(colors)

    End Sub

    Private Function GetColor(c1() As String) As String()
        Return c1
    End Function
End Module

8行目は、呼び出し元のメソッドです。引数と戻り値が配列です。
11行目は、定義されたメソッドです。引数と戻り値が配列です。
引数は(C1() As String)で、AS String()が戻り値の型です。

配列をリストに変換する

配列をリストに変換するサンプルです。

Module Module1
    Sub Main()
        Dim c1() As String = {"赤", "黄", "青"} '配列

        Dim c2 As New List(Of String)(c1)

        c2.Add("オレンジ")

        For Each b As String In c2
            Console.WriteLine(b) '赤 黄 青が出力される
        Next
    End Sub
End Module

3行目は、配列です。
5行目は、配列からリストに変換しています。リストのコンストラクタに配列を指定しています。

2次元配列を作成する

2次元配列を作成するサンプルです。

Module Module1
    Sub Main()
        Dim a(,) As String = {
            {"赤1", "黄1", "青1"},
            {"赤2", "黄2", "青2"}
        }
        Console.WriteLine(a(0, 0)) '赤1が出力される
        Console.WriteLine(a(0, 1)) '黄1が出力される
        Console.WriteLine(a(0, 2)) '青1が出力される
        Console.WriteLine(a(1, 0)) '赤2が出力される
        Console.WriteLine(a(1, 1)) '黄2が出力される
        Console.WriteLine(a(1, 2)) '青2が出力される
    End Sub
End Module

3行目は、()の中にカンマがあります。
3~6行目は、2次元配列を作成しています。
7~12行目は、2次元配列の値を表示しています。

関連の記事

VB.NET if文のサンプル
VB.NET for文のサンプル(Exit/Continue)
VB.NET While文のサンプル(Exit/Continue)
VB.NET Do...Loop文のサンプル(Exit/Continue)

△上に戻る