Управляющие операторы и методы
Основным средством реализации функциональности класса являются методы. Методы строятся из предложений-операторов, в ходе выполнения которых производятся вычисления составляющих операторы выражений. В языке программирования C# существуют специальные операторы, которые в зависимости от вычисляемых значений выражений позволяют управлять ходом выполнения программы.
В этой главе обсуждаются управляющие операторы и проблемы, связанные с определением и вызовом методов.
Управляющие операторы
Управляющие операторы применяются в рамках методов. Они определяют последовательность выполнения операторов в программе и являются основным средством реализации алгоритмов.
Различаются следующие категории управляющих операторов:
- Операторы выбора. Вводятся ключевыми словами if, if ... else ..., switch.
- Итеративные операторы. Вводятся ключевыми словами while, do ... while, for, foreach.
- Операторы перехода (в рамках методов). Вводятся ключевыми словами goto, break, continue.
if, if ... else ...
После ключевого слова if располагается взятое в круглые скобки условное выражение (булево выражение), следом за которым располагается оператор (блок операторов) произвольной сложности.
Далее в операторе if ... else ... после ключевого слова else размещается еще один оператор.
В силу того, что в C# отсутствуют предопределенные алгоритмы преобразования значений к булевскому типу, условное выражение должно быть выражением типа bool – переменной, константой или выражением на основе операций сравнения и логических операций.
В соответствии с синтаксисом условного оператора в части else (если таковая имеется) располагается блок операторов. Частный случай оператора – оператор if.
Какой бы сложности ни были составляющие части if ... else ... – это всего лишь ДВЕ равноправных части одного оператора. "Каскад" в if ... else ... – это всего лишь оператор (блок), содержащий вхождение if или if ... else ... операторов.
if (...) { } else { if (...) { } else { } }
переписывается
if (...) { } else if (...) { } else { }
Вложенный (Nesting) if. Оператор if часто сам в свою очередь является условным оператором произвольной сложности.
И в этом случае оператор if ... else ... включает ДВЕ части.
if (...) { if (...) { } else { } } else { }
переписывается как
if (...) if (...) { } else { } else { }
Главное – не перепутать соответствующие части оператора if ... else ... .
Еще одно важное замечание связано с использованием "простых" (не блоков) операторов. Невозможно построить оператор if ... else ... на основе одиночного оператора объявления:
if (true) int XXX = 125; if (true) int XXX = 125; else int ZZZ = 10;
Такие конструкции воспринимаются как ошибочные. Одиночный оператор в C# — это не блок, и ставить в зависимость от условия (пусть даже всегда истинного) такое ответственное дело, как создание объекта, здесь не принято.
Совсем другое дело – при работе с блоками операторов!
if (true) {int XXX = 125;} if (true) {int XXX = 125;} else {int ZZZ = 10;}
Даже в таких примитивных блоках определена своя область видимости, и создаваемые в них объекты, никому не мешая, существуют по своим собственным правилам.