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