概要
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
  
  
  
  
コメント