For Each...Next ステートメント

For Each...Next ステートメントは、一覧に指定された要素に繰り返します。

For Each ステートメントは以下を指定します。

次の構文が For Each...Next ステートメントに適用されます。

For Each <LoopControlVariable> In <expression>
   [statements]
Next [expression]

識別子でループ コントロール変数を指定します。列挙子式は、一覧または列挙子関数と評価される必要があります(下記の TreeIterator を参照)。ループ コントロール変数は、一覧内の項目と対応するタイプである必要があります。ネストされた For Each...Next ステートメントは、それぞれ独自のループ コントロール変数を使用する必要があります。

列挙子式はループの開始前に評価されます。各反復の開始時に、一覧内の次の要素がループ コントロール変数に割り当てられます。一覧内のすべての要素が評価されるとループが終了します。そうでない場合は、ステートメント ブロックが実行されます。

典型的な For Each...Next ループの例を以下に示します。

Rule total As Integer
   Dim counter As Integer = 0
   Dim numList As list = {0, 2, 4, 6, 8, 10}  

   For Each counter in numList
      total = total + counter
      printValue("Total = " + stringValue(total) + _
         " Counter = " + stringValue(counter))
   Next
End Rule
Output:
"Total = 0 Counter = 0"
"Total = 2 Counter = 2"
"Total = 6 Counter = 4"
"Total = 12 Counter = 6"
"Total = 20 Counter = 8"
"Total = 30 Counter = 10"

ループのボディで Exit For ステートメントを使用することで、For Each...Next ループを終了することができます。

注: 詳細については、「Exit ステートメント」を参照してください。