for (Справочник по C#)
Пример
В следующем примере значение i выводится на консоль и увеличивается на 1 при каждой итерации цикла.
class ForLoopTest { static void Main() { for (int i = 1; i <= 5; i++) { Console.WriteLine(i); } } } /* Output: 1 2 3 4 5 */
Оператор for в предыдущем примере выполняет следующие действия.
-
Во-первых, устанавливается начальное значение переменной i. Данный шаг возникает только один раз независимо от того, сколько раз повторится цикл. Можно представить эту инициализацию происходящей вне циклического процесса. -
Для оценки условия (i <= 5), значение i сравнивается с 5.
-
Если i меньше или равно 5, то условие принимает значение true и выполняются следующие действия.
-
Оператор Console.WriteLine находящийся в теле цикла отображает значение i.
-
Значение i увеличивается на 1.
-
Цикл возвращается к началу раздела 2 для оценки условия.
-
-
Если значение i превышает 5, то условие принимает значение false и цикл завершается.
-
Обратите внимание, что, если начальное значение i превышает 5, то тело цикла не выполняется, даже один раз.
for (initializer; condition; iterator)
body
Разделы служат для следующих целей.
-
Раздел инициализатора устанавливает начальные условия.
Оператор в этом разделе выполняется только один раз, перед тем как начнется цикл. Раздел может содержать только один из следующих двух параметров .-
Объявление и инициализацию локального счетчика итераций (как в примере выше: int i = 1).
Переменная является локальной в цикле и не может быть получен доступ к ней вне цикла. -
Ноль или более выражений оператора из следующего списка, разделенные запятыми.
-
оператор (assigment) назначение -
вызов метода
-
присоедините префикс или postfix выражение increment, как ++i или i++ -
присоедините префикс или postfix выражение уменьшение, как --i или i-- -
создание объекта с помощью (new) новый -
выражение (await) подождите
-
-
-
Раздел условия содержит логическое выражение, вычисляемое для определения того, должен ли цикл остановиться или должен выполнить попытку.
-
Раздел итератора определяет, что происходит после каждой итерации тела цикла. Раздел итератора, содержащий ноль или более следующих выражений выписки, разделенных запятыми.
-
оператор (assigment) назначение -
вызов метода
-
присоедините префикс или postfix выражение increment, как ++i или i++ -
присоедините префикс или postfix выражение уменьшение, как --i или i-- -
создание объекта с помощью (new) новый -
выражение (await) подождите
-
-
Тело цикла состоит из выписки, пустой выписки или блока выписок, которые вы создаете, заключив ноль или более выписок в фигурные скобки.
Можно выйти из цикла for с помощью ключевого слова break или можно осуществить переход к следующей итерации с помощью ключевого слова continue. Также можно покинуть любой цикл с помощью go, return или оператора throw.
Первый пример в этом разделе показывает самый типичный цикл for, который выполняет следующие действия для секций.
-
Инициализатор объявляет и инициализирует локальную переменную цикла – i, которая содержит количество итераций цикла.
-
Проверяет условия значение переменной цикла для известного окончательного значения 5.
-
Шаг приращения итератора задает постфиксный оператор i++, к числу каждой итерации цикла.
Следующий пример иллюстрирует несколько менее общих вариантов: присвоение значения внешней переменной цикла в разделе инициализатора, то вызов метода Console.WriteLine как в инициализаторе, так и в разделах итератора, и изменить значения переменных в разделе 2 итератора.
static void Main() { int i; int j = 10; for (i = 0, Console.WriteLine("Start: {0}",i); i < j; i++, j--, Console.WriteLine("i={0}, j={1}", i, j)) { // Body of the loop. } } // Output: // Start: 0 // i=1, j=9 // i=2, j=8 // i=3, j=7 // i=4, j=6 // i=5, j=5
for (; ; ) { // ... }