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

Вложенные операторы if

Вложенным называется такой оператор if, который является адресатом другого оператора if или же оператора else.

Вложенные операторы if очень часто применяются в программировании. Что же касается их применения в C#, то не следует забывать, что любой оператор else всегда связан с ближайшим оператором if, т.е. с тем оператором if, который находится в том же самом блоке, где и оператор else, но не с другим оператором else. Рассмотрим следующий пример.

// Определить, является ли числовое значение положительным или отрицательным.

using System;

class PosNeg {
  static void Main() {
    if (i == 10) {
      if (j < 20)
        -a = b;
      if (k > 100)
        c = d;
      else
        a = c;  // этот оператор else связан с оператором if (k > 100)
    } else
      a = d;  // этот оператор else связан с оператором if (i == 10)
  }
}

Как следует из комментариев к приведенному выше фрагменту кода, последний оператор else не связан с оператором if (j < 20), поскольку они не находятся в одном и том же блоке, несмотря на то, что этот оператор является для него ближайшим оператором if без вспомогательного оператора else. Напротив, последний оператор else связан с оператором if (i == 10). А внутренний оператор else связан с оператором if (k > 100), поскольку этот последний является для него ближайшим оператором if в том же самом блоке.

В приведенном ниже примере программы демонстрируется применение вложенного оператора if. В представленной ранее программе определения положительных и отрицательных чисел о нуле сообщалось как о положительном числе. Но, как правило, нуль считается числом, не имеющим знака. Поэтому в следующей версии данной программы о нуле сообщается как о числе, которое не является ни положительным, ни отрицательным.

// Определить, является ли числовое значение
// положительным,  отрицательным или нулевым.

using System;

class PosNegZero
{
    static void Main()
    {
        int i;

        for (i = -5; i <= 5; i++)
        {
            Console.Write("Проверка " + i + ":  ");
        if (i < 0) Console.WriteLine("отрицательное число");
            else if (i == 0) Console.WriteLine("число без знака");
            else Console.WriteLine("положительное число");
        }
    }
}

Ниже приведен результат выполнения этой программы.

Проверка -5:  отрицательное число
Проверка -4:  отрицательное число
Проверка -3:  отрицательное число
Проверка -2:  отрицательное число
Проверка -1: отрицательное число
Проверка 0: число без знака
Проверка 1: положительное число
Проверка 2: положительное число
Проверка 3: положительное число
Проверка 4: положительное число
Проверка 5: положительное число
Оператор ifКонструкция if-else-if