概要
For Each文は、ループ処理をしたい時に使う「構文」の1つで、「For Each文」でループ処理を作る最大のメリットは、「ループ回数を直接指定しなくても良い点」です。
3回、5回など指定しなくても、「複数の値が入っている親要素」を指定すれば、要素の数だけループ処理が実行されます。
もっと言えば、ループ回数が指定出来ない場合に使うのが「For Each文」です。
基本構文
For Each 取出した要素の変数名 As 取出した要素の型名 In 複数の値が入った変数 'ここに処理を書く Next
内容
ループ回数や条件を指定しなくてもループ処理されます。
サンプルコード
Module Module1 Sub Main() 'リストの宣言 + 初期値セット Dim fruits = New List(Of String)(New String() {"りんご", "みかん", "イチゴ"}) For Each st As String In fruits Console.WriteLine(st) '出力 'りんご 'みかん 'イチゴ Next End Sub End Module
注意点
「For Each文」でループが始まるとコレクションクラスは、要素の追加や削除を一切受け付けなくなります。
下記のサンプルコードは、コンパイルは通りますが、実行時にエラーになります。
サンプルコード
Module Module1 Sub Main() 'リストの宣言 + 初期値セット Dim fruits = New List(Of String)(New String() {"りんご", "みかん", "イチゴ"}) For Each st As String In fruits fruits.Add("バナナ") 'System.InvalidOperationException: 'コレクションが変更されました。列挙操作は実行されない可能性があります。 fruits.Remove("りんご") 'System.InvalidOperationException: 'コレクションが変更されました。列挙操作は実行されない可能性があります。 fruits.Remove("バナナ") 'リスト内にバナナがないのでセーフ Next End Sub End Module
コメント