Theory and Tasks for Students - Spring 2019
Условный оператор if и switch

В языке C# существует оператор ветвления if, имеющий следующий синтаксис: if (logical_expression) { /* блок кода А */ } else { /* блок кода Б */ } Из названия ключевых слов if и else можно догадаться, как он работает: Если логическое выражение logical_expression (не обязательно одна переменная) возвращает значение true (истина), выполняется блок кода А. В противном случае - т.е. если значение выражение равно false (ложь), выполняется блок кода Б.

Если блок кода Б должен быть пустым, else можно просто опустить: if (logical_expression) { /* блок кода А */ }

Для составления логических выражений используются следыющие операции:

==, <, <=, >, >=, != Сравнение: равенство (не путать с оператором присваивания =), меньше, меньше или равно, больше, больше или равно, не равно
&&, ||, ^, ! Операторы И (AND), ИЛИ (OR), исключающее ИЛИ (XOR), отрицание (NOT)

Следующий код проверяет число на чётность и выводит соответствующиую строку: int n = Convert.ToInt32(Console.ReadLine()); if (n % 2 == 0) { Console.WriteLine("Even"); } else { Console.WriteLine("Odd"); }

Если требуется поставить ещё одно условие, например, когда возможно три варианта развития событий, это обычно записывают так: if (a % 3 == 0) { Console.WriteLine("Zero"); } else if (a % 3 == 1) { Console.WriteLine("One"); } else { Console.WriteLine("Two"); } Это единственный случай, когда не рекомендуется ставить пару фигурных скобок после условия.

Для уменьшения количества случайных ошибок и более эффективной проверки переменной на значение используется конструкция switch .. case. Например, имеется следующая последовательность условий: if (a == 0) { DoThings(); } else if (a == 1) { DoOtherThings(); } else if (a == 2) { DoNothing(); } else { DoDefaultThings(); } Это можно заменить следующим: switch (a) { case 0 : { DoThings(); break; } case 1 : { DoOtherThings(); break; } case 2 : { DoNothing(); break; } default : { DoDefaultThings(); break; } } Вызов оператора break обязателен.