VB.NETのFor Eachの使い方(配列・リスト要素の繰り返し)

VB.NET VB.NET

VB.NETでのFor Each文についてまとめています。

For Eachの使い方

For Each文は、配列やリストの要素を順番に処理してくれます。
For Each文に指定した配列やリストの要素の数だけ処理を行ってくれます。

例えば、下記のように使うことができます。

Dim fruits() As String = {"apple", "banana", "grape"}

' 配列の要素を順番に処理
For Each fruit As String In fruits
    Console.WriteLine(fruit)
Next

最初にfruits 配列を文字列型の要素で宣言して初期化しています。

次の処理で、For Each文を使って処理しています。
For Each文は下記のように使うことができます。

For Each [取り出した要素を格納する変数] As [要素のデータ型] In [ひとつずつ取り出したいリスト/配列]
' 要素に対して実行したい処理
Next

For Eachのあとに、リストや配列の取り出した要素を格納する変数を定義します。
Asの次に、その変数のデータ型を定義し、Inの後に元となるリスト・配列を指定します。

今回のコードではfruits 配列を指定しているので、ひとつずつ要素を取り出して、出力されます。
結果を確認すると、下記のようになります。

apple
banana
grape

リストを処理する

リストも同様にして、処理することが可能です。
下記のように使うことができます。

Dim fruits As New List(Of String)

fruits.Add("orange")
fruits.Add("melon")
fruits.Add("apple")

For Each fruit As String In fruits
    Console.WriteLine(fruit)
Next

fruits変数にリストを作成して、For Eachで出力しました。
結果はこのようになります。

orange
melon
apple

格納した要素分、処理することができました。

For Eachの要素の順番は?

For Each文は、配列やリストの要素を順番に処理します。
配列やリストなどのコレクションに要素が追加された順番で処理されます。

昇順や降順にしたい場合にはSortメソッドを使う方法があります。
下記のコードは配列の要素をSortメソッドで並び変えています。

Dim fruits As String() = {"grape", "apple", "melon", "banana"}


' 並び替える
Array.Sort(fruits)

For Each fruit As String In fruits
    Console.WriteLine(fruit)
Next

結果として、下記のように出力されます。

apple
banana
grape
melon

昇順に並び変わりました。

処理途中でFor Eachを抜けるには?(Exit For)

For Each文の処理途中でループを終了して、ループから抜けるにはExit For文を使用します。

Dim numbers() As Integer = {1, 2, 3, 4, 5}

For Each number As Integer In numbers
    If number = 3 Then
        Exit For ' 処理途中でループを終了
    End If
    Console.WriteLine(number)
Next

最初にnumbers配列を数値の要素で作成しました。

その次の行で、For Each文を使って、要素をひとつずつ出力しています。

取り出した要素はnumberに格納されて、ひとつずつIf文で確認します。
If number = 3 Then」となっているので、値が「3」になったらIf文の中のExit Forが実行されて、処理を抜けます。

結果を確認すると、下記のように出力され「3」になったらループを抜けていることが確認できました。

1
2

For Eachで処理をスキップするには?(Continue For)

For Each文の処理中に特定の条件で処理をスキップして、次の要素へ移動するにはContinue For文を使用します。

例えば、下記のように使用します。

Dim numbers() As Integer = {1, 2, 3, 4, 5}

For Each number As Integer In numbers
    If number = 3 Then
        Continue For ' numberが3の場合は処理をスキップして次の要素へ
    End If
    Console.WriteLine(number)
Next

整数のnumbers配列を宣言しています。
先ほどと同様に、配列の要素は1から5までの整数です。

次の処理でFor Eachを使ってループ処理をし、number変数に値をひとつずつ取り出します。
If文でnumber変数の値が「3」の場合にContinue Forを実行しています。

これで、「3」の時だけ処理がスキップされます。
結果を確認すると、下記のように出力され「3」になったらループをスキップされていることが確認できました。

1
2
4
5

VB.NETのFor Eachの使い方まとめ

For Each文は、配列やリストなどのコレクションの要素を順番に処理する時に便利です。
特定の条件でループを途中で終了するにはExit Forを使って、特定の条件で処理をスキップするにはContinue Forを使って制御しました。

配列やリストなどをループする場合には、For文などを使うよりもバグを生み出しにくく、効率的に処理できるので使用していきましょう。

コメント

タイトルとURLをコピーしました