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 は「コレクション中の各要素を使って処理を行う」という風に解釈し、使い分けています。
まあ、参考までに。