В данной статье рассмотрим ветвление кода на несколько сценариев с помощью условный конструкций.
Конструкция if — else if — else
Это основная конструкция, с помощью которой мы создаём ветвление кода. Скорее всего, вы будете применять её в разных вариациях довольно часто. Рассмотрим синтаксис конструкции в общем виде:
if ( condition0 )
{
//some actions
}
else if ( condition1 )
{
//some actions
}
...
else if ( condition2 )
{
//some actions
}
else
{
//some actions
}
Итак, по порядку:
1. Сначала с помощью ключевого слова if объявляем начало условной конструкции. Сразу после него пишем условие в скобках. Выражение в скобках обязательно должно иметь тип данных bool (true/false). Например;
- if (a>b) // a и b имеют числовой тип
- if (familyInstance.IsMirrored)
- if (b) //b — ранее объявленная переменная с типом bool
И далее в фигурных скобках можно написать то, что мы делаем при выполнении условия:
if (a>b)
{
Console.WriteLine("a больше b");
}
Вообще, язык C# позволяет после выражения c if не использовать фигурный скобки, а написать одну инструкцию в одной строке. Я категорически не рекомендую так делать, потому что однажды вы захотите добавить новые строки. Однако компилятор воспримет их обязательными к выполнению — то есть как бы лежащими за пределами выражения для if.
if (a == b)
Console.WriteLine("a равно b");
Console.WriteLine($"Значение обеих переменных равны {a}");
В данном случае строка $"Значение обеих переменных равны {a}" будет выведена на консоль в любом случае. Отступы в C# нужны только для удобства чтения и оформления кода, практического значения для компилятора они не несут.
2. Далее делаем тоже самое, но уже с ключевыми словами else if. После них обязательно пишем условие в том же формате, что и для первого if. Конструкций if else() может идти подряд любое количество, или же её можно не использовать. Обратите внимание, что условие внутри скобок будет проверяться только тогда, когда все предыдущие условия дали false. То есть если выполнился код в блоке if, все нижестоящие блоки проигнорируются.
int a = 4;
int b = 4;
if (a>b) // неверно
{
Console.WriteLine("a больше b"); // строка не выполнится
}
else if ( a == b) // верно
{
Console.WriteLine("a равно b"); // строка выполнится
Console.WriteLine($"Значение обеих переменных равны {a}"); // строка выполнится
}
else if ( a<b) // условие не проверяется
{
Console.WriteLine("a меньше b"); // строка не выполнится
}
Завершает конструкцию слово else. Как и else if, эта часть необязательная. Но этот блок пишется один раз (или не пишется), и после него не пишется условие. Подразумеваем — во всех остальных случаях.
if (a>b)
{
Console.WriteLine("a больше b");
}
else if ( a == b)
{
Console.WriteLine("a равно b");
Console.WriteLine($"Значение обеих переменных равны {a}");
}
else
{
Console.WriteLine("a меньше b");
}
Подытожим:
- Блок if обязательный, else if и else — по желанию.
- Можно добавить любое число условий через else if.
- После if и else if обязательно пишем условие в круглых скобках.
- Выражение после условия заключаем в фигурные скобки.
Конструкция switch — case.
Отлично, с if — else, всё понятно и очевидно. Но что если у нас много условий, и во всех нужно сделать одно небольшой действие? Наш код покроется бесконечным числом else if и в нём будет невозможно разобраться. Тогда, возможно, стоит применить switch — case. Синтаксис в общем виде:
switch (переменная)
{
case "Значение1":
Console.WriteLine("Фраза 1");
break;
case "Значение2":
Console.WriteLine("Фраза 2");
break;
case "Значение3":
Console.WriteLine("Фраза 3");
break;
}
Сначала пишем ключевое слово switch, затем в скобках имя переменной, по которой будет происходить перебор.
Далее открываем фигурные скобки. Начинаем использовать операторы case.
После ключевого слова case пишем потенциальное значение переменной (любое, не обязательно строковое, она может иметь любой тип) и ставим двоеточие.
Далее пишем инструкции на случай, если значение переменной совпало с указанным, а в конце ставим ключевое слово break, чтобы выйти из проверки следующих значений.
Приведём пример. Дано число дней, прошедших, начиная с некоторого понедельника. Определить день недели по числу дней.
int a = 599;
switch (a % 7)
{
case 0:
Console.WriteLine("Понедельник");
break;
case 1:
Console.WriteLine("Вторник");
break;
case 2:
Console.WriteLine("Среда");
break;
case 3:
Console.WriteLine("Четверг");
break;
case 4:
Console.WriteLine("Пятница");
break;
case 5:
Console.WriteLine("Суббота");
break;
case 6:
Console.WriteLine("Воскресенье");
break;
}
Если вы вдруг забыли, почему во второй строке знак %, то можете освежить в памяти первую часть цикла о языке C#.
А в следующей статье мы познакомимся с циклами и научимся работать с ними.
Мой телеграм-канал о Revit API. Заходите, буду рад видеть вас!