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文などを使うよりもバグを生み出しにくく、効率的に処理できるので使用していきましょう。
コメント