foreach

foreachはC++にはない(おっと最近追加になったらしい)制御構文である。
forにも似ているのだが、ループカウンターを用意する必要がない。
こんな感じである。


int[] testArray = { 0, 1, 2, 3, 4 };
foreach (int output in testArray)
{
MessageBox.Show(string.Format("{0}", output));
}
これで各testArrayの要素がoutputに代入されて、{}内の処理が実行できる。
#実際には各要素がoutputに代入される訳ではありません、参照が引き渡されるだけです
もちろん上記の例の様に要素数が既知の場合には、あまり意味がない。
ところが上のレジストリの取得の様に、要素数が分からない場合には、だいぶ処理が簡素化できる。
もともとforeachはperlに由来するようで、DBからのqueryによるレコードの抽出や、xmlの要素の抽出のように要素数が不定の膨大なデータを処理するのに最適である。
今後LINQを学習する予定だが、foreachとラムダ式は避けて通れないようだ。