for と foreach の使い分け

Tech Ed 2日目の BOF で、「for と foreach どちらを使うべきか」みたいな話題が出たみたいですね。私は見に行けませんでしたが、Twitter で知りました。

私の場合、コレクションの各要素を使って処理を行う場合は foreach を使うようにしています。

foreach (var item in items)
{
    // item を使った処理
}

foreach は、コレクションの最後の要素を使った処理が終われば、勝手にループを抜けてくれます。IndexOutOfRangeException 発生の心配がありません。

for は、繰り返し処理を行う場合に使っています。例えば、アプリ利用者の設定値によって、繰り返す回数が変わるときとか。

for (int i = 0; i < loopCount; i++)
{
    // 処理
}

例えが分かりづらいですね。なかなか思いつかなかったもので…。

for は「処理を指定した回数だけ繰り返す」、foreach は「コレクション中の各要素を使って処理を行う」という風に解釈し、使い分けています。

まあ、参考までに。