Оператор цикла 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.