Материал предоставлен http://it.rfet.ru

Отсутствующие части цикла

Ряд интересных разновидностей цикла for получается в том случае, если оставить пустыми отдельные части определения цикла. В С# допускается оставлять пустыми любые или же все части инициализации, условия и итерации в операторе цикла 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.

Условное выражениеБесконечный цикл