foreach
циклы демонстрируют более конкретное намерение, чем for
циклы .
Использование цикла foreach
демонстрирует всем, кто использует ваш код, что вы планируете что-то сделать для каждого члена коллекции независимо от его места в коллекции. Он также показывает, что вы не изменяете исходную коллекцию (и выдает исключение, если вы пытаетесь это сделать).
Другое преимущество foreach
состоит в том, что он работает на любом IEnumerable
, где for
имеет смысл только для IList
, где каждый элемент фактически имеет индекс.
Однако, если вам нужно использовать индекс элемента, тогда, конечно, вам следует разрешить использовать цикл for
. Но если вам не нужно использовать индекс, его наличие просто загромождает ваш код.
Насколько я знаю, никаких существенных последствий для производительности нет. На каком-то этапе в будущем будет проще адаптировать код, используя foreach
, для запуска на нескольких ядрах, но сейчас не о чем беспокоиться.