Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp Language Specification.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
4.75 Mб
Скачать

8.8Операторы итераций

Оператор итераций повторно выполняет один и тот же внедренный оператор.

оператор_итераций: оператор_while оператор_do оператор_for оператор_foreach

8.8.1Оператор while

Оператор while выполняет внедренный оператор несколько раз (возможно, ни разу) в зависимости от соблюдения условия.

оператор_while: while ( логическое_выражение ) внедренный_оператор

Оператор while выполняется следующим образом.

  • Вычисляется логическое_выражение (§7.20).

  • Если результатом логического выражения является true, управление передается внедренному оператору. Если управление достигает конечной точки внедренного оператора (возможно, в результате выполнения оператора continue), управление передается в начало оператора while.

  • Если значением логического выражения является false, управление передается в конечную точку оператора while.

В операторе while внутри внедренного оператора можно использовать оператор break (§8.9.1) для передачи управления в конечную точку оператора while (т. е. для завершения итераций внедренного оператора), а также оператор continue (§8.9.2) для передачи управления в конечную точку внедренного оператора (для выполнения еще одной итерации оператора while).

Внедренный оператор в операторе while считается достижимым, если оператор while является достижимым и значение логического выражения отлично от константы false.

Конечная точка оператора while считается достижимой, если соблюдено по крайней мере одно из следующих условий.

  • Оператор while содержит достижимый оператор break, осуществляющий выход из оператора while.

  • Оператор while является достижимым и значение логического выражения отлично от константы true.

8.8.2Оператор do

Оператор do выполняет внедренный оператор один или несколько раз в зависимости от соблюдения условия.

оператор_do: do внедренный_оператор while ( логическое_выражение ) ;

Оператор do выполняется следующим образом.

  • Управление передается внедренному оператору.

  • Если управление достигает конечной точки внедренного оператора (возможно, в результате выполнения оператора continue), вычисляется логическое_выражение (§7.20). Если результатом логического выражения является true, управление передается в начало оператора do. В противном случае управление передается в конечную точку оператора do.

В операторе do внутри внедренного оператора можно использовать оператор break (§8.9.1) для передачи управления в конечную точку оператора do (т. е. для завершения итераций внедренного оператора), а также оператор continue (§8.9.2) для передачи управления в конечную точку внедренного оператора.

Внедренный оператор в операторе do считается достижимым, если оператор do является достижимым.

Конечная точка оператора do считается достижимой, если соблюдено по крайней мере одно из следующих условий.

  • Оператор do содержит достижимый оператор break, осуществляющий выход из оператора do.

  • Конечная точка внедренного оператора достижима и значение логического выражения отлично от константы true.

8.8.3Оператор for

Оператор for вычисляет последовательность инициализирующих выражений и затем, пока заданное условие соблюдается, повторно выполняет внедренный оператор и вычисляет последовательность итерационных выражений.

оператор_for: for ( инициализатор_forнеобязательно ; условие_forнеобязательно ; итератор_forнеобязательно ) внедренный_оператор

инициализатор_for: объявление_локальной_переменной список_выражений_оператора

условие_for: логическое выражение

итератор_for: список_выражений_операторов

список_выражений_операторов: выражение_оператора список_выражений_операторов , выражение_оператора

Инициализатор_for (если он задан) состоит из объявления_локальной_переменной (§8.5.1) или из списка выражений_операторов (§8.6), разделенных запятыми. Область видимости локальной переменной, объявленной инициализатором_for, начинается с декларатора_локальной_переменной и заканчивается вместе с внедренным оператором. В область видимости включаются условие_for и итератор_for.

Условие_for (если оно задано) должно быть логическим_выражением (§7.20).

Итератор_for (если он задан) состоит из списка выражений_операторов (§8.6), разделенных запятыми.

Оператор for выполняется следующим образом.

  • Если задан инициализатор_for, инициализаторы переменных или выражения операторов выполняются в порядке их записи. Этот шаг выполняется только один раз.

  • Если задано условие_for, оно проверяется.

  • Если условие_for отсутствует или результатом его вычисления является true, управление передается внедренному оператору. Если управление достигает конечной точки внедренного оператора (возможно, в результате выполнения оператора continue), после этого последовательно вычисляются выражения итератора_for (если они заданы), а затем выполняется следующая итерация, начиная с проверки условия_for (см. выше).

  • Если условие_for задано и результатом его вычисления является false, управление передается в конечную точку оператора for.

В операторе for внутри внедренного оператора можно использовать оператор break (§8.9.1) для передачи управления в конечную точку оператора for (т. е. для завершения итераций внедренного оператора), а также оператор continue (§8.9.2) для передачи управления в конечную точку внедренного оператора (для выполнения итератора_for и еще одной итерации оператора for, начиная с условия_for).

Внедренный оператор в операторе for считается достижимым, если соблюдено одно из следующих условий.

  • Оператор for является достижимым и условие_for отсутствует.

  • Оператор for является достижимым, условие_for задано и его значение отлично от константы false.

Конечная точка оператора for считается достижимой, если соблюдено по крайней мере одно из следующих условий.

  • Оператор for содержит достижимый оператор break, осуществляющий выход из оператора for.

  • Оператор for является достижимым, условие_for задано и его значение отлично от константы true.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]