Ряд интересных разновидностей цикла for
получается в том случае, если оставить пустыми отдельные части определения цикла. В C# допускается оставлять пустыми любые или же все части инициализации, условия и итерации в операторе цикла for
. В качестве примера рассмотрим такую программу.
// Отдельные части цикла for могут оставаться пустыми.
using System;
class Empty {
static void Main() {
int i;
for (i = 0; i < 10;) {
Console.WriteLine("Проход №" + i);
i++; // инкрементировать переменную управления циклом
}
}
}
В данном примере итерационное выражение в определении цикла for
оказывается пустым, т.е. оно вообще отсутствует. Вместо этого переменная i
, управляющая циклом, инкрементируется в теле самого цикла. Это означает, что всякий раз, когда цикл повторяется, значение переменной i
проверяется на равенство числу 10, но никаких других действий при этом не происходит. А поскольку переменная i
инкрементируется в теле цикла, то сам цикл выполняется обычным образом, выводя приведенный ниже результат.
Проход №0
Проход №1
Проход №2
Проход №3
Проход №4
Проход №5
Проход №6
Проход №7
Проход №8
Проход №9
В следующем примере программы из определения цикла for
исключена инициализирующая часть.
// Исключить еще одну часть из определения цикла for.
using System;
class Empty2 {
static void Main() {
int i;
i = 0; // исключить инициализацию из определения цикла
for (; i < 10;) {
Console.WriteLine("Проход №" + i);
i++; // инкрементировать переменную управления циклом
}
}
}
В данном примере переменная i
инициализируется перед началом цикла, а не в самом цикле for
. Как правило, переменная управления циклом инициализируется в цикле for
. Выведение инициализирующей части за пределы цикла обычно делается лишь в том случае, если первоначальное значение данной переменной получается в результате сложного процесса, который нецелесообразно вводить в операторе цикла for
.
Условное выражение | Бесконечный цикл |