VB.NETのForEach文とは?実践で使うための裏技も解説!

「VB.NETのFor Each文って、何に使うのかな……」
「VB.NETのFor Each文の具体的な使い方や、サンプルコードを知りたい……」
と思っていませんか?
For Each文は、ループ処理を作る時に覚えておくと便利です。
そこで今回は、VB.NETのFor Each文の使い方・実践で使うための裏技を解説します。
- SE
- VB.NETのFor Each文って、すぐに使えるのかな...
- PM
- 使い方はとっても簡単なので、1つずつ覚えていきましょう。
※この記事は、Visual Basicの16.0で動作確認しました。
この記事でわかること
VB.NETのFor Each文とは?
For Each文は、ループ処理を作るときに使う「構文」の1つです。
「For Each文」でループ処理を作るメリットは、「ループ回数を直接指定しなくても良い点」です。3回、5回など指定しなくても、「複数の値が入っている親要素」を指定すれば、要素の数だけループ処理が実行されるのです。
VB.NETのFor Eachの使い方とは?
次に、VB.NETのFor Each文の使い方を解説します。使い方は、以下の通りです。
1 2 3 |
For Each 子要素 As 子要素の型名 In 親要素(複数の値が入った変数) 'ここに「子要素」を使った処理を書く Next |
親要素に複数の値が入った配列などを指定することで、ループ処理が作れます。
VB.NETでFor Eachを使うときのサンプルコード
サンプルコードは、以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 |
Module Program Sub Main(args As String()) '配列の宣言 + 初期値セット Dim arrNetProgLang = New String() {"VB.NET", "C#"} 'For Each文で配列の要素の数分、値を出力 For Each item As String In arrNetProgLang Console.WriteLine(item) Next End Sub End Module |
実行結果:
配列宣言時に入れた初期値が、ログに出力されています。このように、ループ処理を簡単に作れます。
VB.NETのFor Eachを使いこなす2つのテクニックとは?
ここからは、応用テクニックを2つ解説します。
1. Exit For:途中で処理を抜け出す
1つ目は、「途中で処理を抜け出す」ときです。この場合は、「Exit For」を使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Module Program Sub Main(args As String()) 'スコアを格納する配列の宣言 + 初期値セット Dim arrScore = New String() {50, 40, 25, 40, 80} '合計計算用の変数を用意 Dim intNumTotal As Integer intNumTotal = 0 '要素数分値を出力 For Each num As String In arrScore '合計値が100以上の場合は、処理終了 If intNumTotal >= 100 Then Console.WriteLine("100点以上となったため、処理終了") Exit For End If '合計値を計算 intNumTotal = intNumTotal + num '取得した点数 + 合計点を出力 Console.WriteLine(num & "点ゲット") Console.WriteLine("合計点は" & intNumTotal) Console.WriteLine("--------------------------") Next End Sub End Module |
実行結果:
If文の中で「Exit For」を書いているため、100点以上の場合に処理が終了しています。このように、処理を抜け出すことができるのです。
2. Continue For:途中で処理をスキップする
2つ目は、「途中で処理をスキップする」ときです。この場合は、「Continue For」を使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Module Program Sub Main(args As String()) 'スコアを格納する配列の宣言 + 初期値セット Dim arrScore = New String() {50, 40, 25, 40, 80} '要素数分値を出力 For Each num As String In arrScore '50点以上の場合は合格 If num >= 50 Then Console.WriteLine("あなたの点数は「" & num & "」なので、合格です。") Console.WriteLine("--------------------------") Continue For End If '50点未満の場合は、不合格です Console.WriteLine("あなたの点数は「" & num & "」なので、不合格です。") Console.WriteLine("勉強を継続して、再受験しましょう") Console.WriteLine("--------------------------") Next End Sub End Module |
実行結果:
先ほどと同様、If文を追加しています。If文内にある「Continue For」以降の処理は実行されず、次のループ処理に移動しています。
このように、処理をスキップできるのです。
VB.NETで繰り返し処理するなら「For」も覚えておこう
For Each文は、配列などの複数の値が入っているケースで便利です。ただ、「ループ回数を指定して実行したいとき」に、少し不便です。
そのため、「ループ回数を指定してループ処理を作る方法」も、覚えておくのがおすすめです。
1 2 3 4 5 6 7 8 |
Module Program Sub Main(args As String()) '要素数分値を出力 For i = 1 To 5 Console.WriteLine(i & "回目の実行") Next End Sub End Module |
実行結果:
「For i = 1 To 5」で、1 ~ 5までループ処理する処理を作っています。このように、数を指定してループ処理が作れるのです。
まとめ
今回は、VB.NETのFor Each文の使い方・使いこなすための2つのコツを解説しました。
「If文」や「For文」など、セットで覚えておくとループ処理の幅が広がります。
1つずつでいいので、ぜひコードを書いて実行してみてくださいね。