Описание языка «PascalABC.NET».

Оператор цикла foreach.

Оператор цикла foreach имеет одну из следующих форм:

Foreach переменная in контейнер do. Оператор.

Или.

Foreach переменная: тип in контейнер do. Оператор.

Или.

Foreach var переменная in контейнер do. Оператор.

В качестве контейнера может фигурировать динамический массив, строка, множество, а также любой контейнер, удовлетворяющий интерфейсу IEnumerable или IEnumerable<T>(например, List<T>, Dictionary<Key,Value> и т.д.). Переменная цикла должна иметь тип, совпадающий с типом элементов контейнера (если контейнер удовлетворяет интерфейсу IEnumerable, то это тип object). В последней форме foreach тип переменной цикла автовыводится по типу элементов контейнера.

Переменная цикла пробегает все значения элементов контейнера и для каждого значения переменной цикла выполняется тело цикла. Изменение переменной цикла внутри тела цикла не меняет элементы контейнера, т.е. они доступны только на чтение.

Например:

Var. Ss: set of string := ['Иванов','Петров','Сидоров']; A: array of integer := (3,4,5); B: array [1..5] of integer := (1,3,5,7,9); L := new List<real>; Begin. foreach s: string in ss do. Write(s,' '); Writeln; Foreach x: integer in a do. Write(x,' '); Writeln; Foreach var x in b do. Write(x,' '); Writeln; Foreach var r in l do. Write(r,' '); End.