ОператорFOREACH ::=
foreach (ОбъявлениеИтератора in ВыражениеIN) Оператор
ОбъявлениеИтератора ::= ИмяТипа Идентификатор
ВыражениеIN ::= Выражение
Оператор ::= Оператор
::= БлокОператоров
ИмяТипа – Обозначает тип итератора.
identifier – обозначает переменную которая представляет элемент коллекции.
ВыражениеIN – объект, представляющий массив или коллекцию.
Этим оператором обеспечивается повторение множества операторов, составляющих тело цикла, для каждого элемента массива или коллекции. После перебора ВСЕХ элементов массива или коллекции и применения множества операторов для каждого элемента массива или коллекции, управление передаётся следующему за ОператорFOREACH оператору (разумеется, если таковые имеются).
Область видимости имён переменных, определяемых этим оператором, распространяется только на операторы, относящиеся к данному оператору цикла.
int[] array = new int[10]; // Объявили и определили массив
foreach (int i in array) {/*:::::*/}; // Для каждого элемента массива надо сделать…
Специализированный оператор, приспособленный для работы с массивами и коллекциями. Обеспечивает повторение множества (единичного оператора или блока операторов) операторов для КАЖДОГО элемента массива или коллекции. Конструкция экзотическая и негибкая. Предполагает выполнение примитивных последовательностей действий над массивами и коллекциями (начальная инициализация или просмотр ФИКСИРОВАННОГО количества элементов). Действия, связанные с изменениями размеров и содержимого коллекций в рамках этого оператора могут привести к непредсказуемым результатам.