VB.NET Listのサンプル

VB.NETのListのサンプルです。

確認環境
・Microsoft Visual Studio Community 2019

目次

仕組み Listクラス
初期値 要素を初期値でセットする
取得する 要素を取得する
  要素をすべて取得する(For Each文)
  インデックスを取得する(IndexOfメソッド)
  指定の要素があるかを返す(Containsメソッド)
  要素数を取得する(Countメソッド)
追加する 末尾に要素を追加する(Addメソッド)
  位置を指定して要素を追加する(Insertメソッド)
更新する 要素を置き換える
削除する 要素を削除する-インデックスを指定(RemoveAtメソッド)
  要素を削除する-値を指定(Removeメソッド)
  要素を削除する-範囲を指定(RemoveRangeメソッド)
  要素をすべて削除する (Clearメソッド)
ソート 要素を逆順にする(Reverseメソッド)
使用する メソッドの引数と戻り値がリストの場合
  リストの中にリストがあるサンプル
配列 リストから配列にコピーする(ToArrayメソッド)

Listクラス

要素を初期値でセットする

要素を初期値でセットするサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)(New String() {"赤", "黄", "青"})

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

3行目は、Listクラスをインスタンス化し、かつ初期値をセットしています。
5~7行目は、For Each文で値を取得しています。

要素を取得する

要素を取得するサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        Console.WriteLine(a(1)) '黄と出力される

    End Sub
End Module

8行目は、(1)で要素の位置を指定して要素を取得しています。
要素の位置は、赤=0、黄=1、青=2です。

要素をすべて取得する(For Each文)

要素をすべて取得するサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        For Each b In a
            Console.WriteLine(b) '赤 黄 青と出力される
        Next
    End Sub
End Module

8行目は、For Each文ですべての要素を取得しています。

インデックスを取得する(IndexOfメソッド)

指定した値のインデックスを取得するサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        Console.WriteLine(a.IndexOf("黄")) '1が出力される

    End Sub
End Module

8行目は、IndexOfメソッドで指定の値があるインデックスを取得します。
インデックスは0から始まります。

指定の要素があるかを返す (Containsメソッド)

指定の要素があるかを返すサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        If a.Contains("青") Then
            Console.WriteLine("Trueです") 'Trueですと出力される
        End If

    End Sub
End Module

8行目は、Containsメソッドで指定の要素があるかを取得しています。
ある場合trueになります。

要素数を取得する (Countメソッド) 

要素数を取得するサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        Console.WriteLine(a.Count) '3と出力される
    End Sub
End Module

8行目は、Countメソッドで要素数を取得しています。

末尾に要素を追加する(Addメソッド)

Addメソッドは、リストの末尾に要素を追加します。

Module Module1
    Sub Main()
        Dim a As New List(Of String)

        a.Add("赤")
        a.Add("黄")
        a.Add("青")

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

    End Sub
End Module

3行目は、Listクラスをインスタンス化しています。
5~7行目は、Addメソッドでリストの末尾に要素を追加しています。
9~11行目は、For Each文で値を取得しています。

位置を指定して要素を追加する(Insertメソッド)

Insertメソッドは、リストの位置を指定して要素を追加します。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        a.Insert(0, "オレンジ")

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

3行目は、Listクラスをインスタンス化しています。
8行目は、Insertメソッドでリストの位置を指定して要素を追加しています。先頭の位置は0です。
10~12行目は、For Each文で値を取得しています。

要素を置き換える

要素を置き換えるサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        a(2) = "オレンジ"

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

8行目は、(2)で要素の位置を指定して要素を置き換えています。
要素の位置は、赤=0、黄=1、青=2です。

要素を削除する-インデックスを指定(RemoveAtメソッド)

RemoveAtメソッドは、インデックスを指定して要素を削除します。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        a.RemoveAt(0)

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

8行目は、RemoveAtメソッドでインデックスを指定して削除しています。インデックスは0から始まります。

要素を削除する-値を指定(Removeメソッド)

Removeメソッドは、値を指定して要素を削除します。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        a.Remove("黄")

        For Each c As String In a
            Console.WriteLine(c) '赤 青と出力される
        Next
    End Sub
End Module

8行目は、Removeメソッドで値を指定して削除しています。

要素を削除する-範囲を指定(RemoveRangeメソッド)

RemoveRangeメソッドは、リストの範囲を指定して要素を削除します。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")
        a.Add("緑")

        a.RemoveRange(1, 2)

        For Each b As String In a
            Console.WriteLine(b) '赤 緑と出力される
        Next
    End Sub
End Module

9行目は、RemoveRangeメソッドでリストの範囲を指定して要素を削除しています。
1つめの引数はインデックスで、2つめの引数は要素の数です。
インデックスは0から始まります。

要素をすべて削除する (Clearメソッド)

すべての要素を削除するサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        a.Clear()

        For Each b As String In a
            Console.WriteLine(b) '出力されない
        Next
    End Sub
End Module

8行目は、Clearメソッドですべての要素を削除しています。

要素を逆順にする(Reverseメソッド)

要素を逆順にするサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        a.Reverse()

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

8行目は、Reverseメソッドで要素を逆順にしています。

メソッドの引数と戻り値がリストの場合

メソッドの引数と戻り値がリストの場合です。

Module Module1
    Sub Main()
        Dim color As New List(Of String)
        color.Add("赤")
        color.Add("黄")
        color.Add("青")

        Dim b As List(Of String)
        b = printColor(color)
    End Sub

    'Private Function printColor(c1 As List(Of String)) As List(Of String)
    Private Function printColor(c1 As List(Of String))
        Return c1
    End Function
End Module

9行目は、呼び出し元のメソッドです。引数にリストを指定しています。戻り値もリストです。
13行目は、定義されたメソッドです。「c1 As List(Of String)」のc1が変数で、その後がデータ型のリストです。

12行目のように引数の後に戻り値「As List(Of String)」をつけることもできます。

呼び出し元のメソッドの引数の変数名(9行目のcolor)と定義されたメソッドの引数の変数名(12行目のc1)は異なっていても使用できます。

リストの中にリストがあるサンプル

リストの中にリストがあるサンプルです。

Module Module1
    Sub Main()
        Dim list1 As New List(Of List(Of String))

        Dim list2 As New List(Of String)
        list2.Add("赤")
        list2.Add("黄")
        list2.Add("青")

        Dim list3 As New List(Of String)
        list3.Add("red")
        list3.Add("yellow")
        list3.Add("blue")

        list1.Add(list2)
        list1.Add(list3)

        Console.WriteLine(list1(0)(0)) '赤
        Console.WriteLine(list1(0)(1)) '黄
        Console.WriteLine(list1(0)(2)) '青
        Console.WriteLine(list1(1)(0)) 'red
        Console.WriteLine(list1(1)(1)) 'yellow
        Console.WriteLine(list1(1)(2)) 'blue
    End Sub
End Module

3行目は、リストの中にリストを定義しています。
5~13行目は、通常のリストを作成しています。
15,16行目は、リストにリストを追加しています。
18~23行目は、リストの値を取得しています。

リストから配列にコピーする(ToArrayメソッド)

リストから新しい配列にコピーするサンプルです。

Module Module1
    Sub Main()
        Dim a As New List(Of String)
        a.Add("赤")
        a.Add("黄")
        a.Add("青")

        Dim b = a.ToArray()

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

        'b.Add("オレンジ") リストでないのでエラーになる
    End Sub
End Module

3~6行目は、リストを作成し値をセットしています。
8行目は、ToArrayメソッドでリストを新しい配列にコピーしています。
14行目は、addメソッドで値を追加しようとしますがリストではなく配列なのでエラーになります。

関連の記事

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

△上に戻る