Конструкция if..else и тернарная операция
Условные конструкции - один из базовых компонентов многих языков программирования, которые направляют работу программы по одному из путей в зависимости от определенных условий. Одной из таких конструкций в языке программирования C# является конструкция if..else
Конструкция if/else проверяет истинность некоторого условия и в зависимости от результатов проверки выполняет определенный код.
Ее простейшая форма состоит из блока if:
if(условие)
{
выполняемые инструкции
}
После ключевого слова if ставится условие. Условие должно представлять значение типа bool. Это может быть непосредственно значение типа bool или результат условного выражения или другого выражения, которое возвращает значение тиа bool. И если это условие истинно (равно true), то срабатывает код, который помещен далее после условия внутри фигурных скобок.
Например:
int num1 = 8;
int num2 = 6;
if(num1 > num2)
{
Console.WriteLine($"Число {num1} больше числа {num2}");
}
В данном случае у нас первое число больше второго, поэтому выражение num1 > num2 истинно и возвращает true, следовательно, управление переходит к строке Console.WriteLine("Число {num1} больше числа {num2}");
Если блок if содержит одну инструкцию, то мы можем его сократить, убрав фигурные скобки:
int num1 = 8;
int num2 = 6;
if (num1 > num2)
Console.WriteLine($"Число {num1} больше числа {num2}");
// или так
if (num1 > num2) Console.WriteLine($"Число {num1} больше числа {num2}");
Также мы можем соединить сразу несколько условий, используя логические операторы:
int num1 = 8;
int num2 = 6;
if(num1 > num2 && num1==8)
{
Console.WriteLine($"Число {num1} больше числа {num2}");
}
В данном случае блок if будет выполняться, если num1 > num2 равно true и num1==8 равно true.
Выражение else
Но что, если мы захотим, чтобы при несоблюдении условия также выполнялись какие-либо действия? В этом случае мы можем добавить блок else:
int num1 = 8;
int num2 = 6;
if(num1 > num2)
{
Console.WriteLine($"Число {num1} больше числа {num2}");
}
else
{
Console.WriteLine($"Число {num1} меньше числа {num2}");
}
Блок else выполняется, если условие после if ложно, то есть равно false. Если блок else содержит толко одну инструкцию, то оять же мы можем его сократить, убрав фигурные скобки:
int num1 = 8;
int num2 = 6;
if(num1 > num2)
Console.WriteLine($"Число {num1} больше числа {num2}");
else
Console.WriteLine($"Число {num1} меньше числа {num2}");
else if
Но в примере выше при сравнении чисел мы можем насчитать три состояния: первое число больше второго, первое число меньше второго и числа равны. Используя конструкцию else if, мы можем обрабатывать дополнительные условия:
int num1 = 8;
int num2 = 6;
if(num1 > num2)
{
Console.WriteLine($"Число {num1} больше числа {num2}");
}
else if (num1 < num2)
{
Console.WriteLine($"Число {num1} меньше числа {num2}");
}
else
{
Console.WriteLine("Число num1 равно числу num2");
}
При необходимости можно добавить несколько выражений else if:
string name = "Alex";
if (name == "Tom")
Console.WriteLine("Вас зовут Tomas");
else if (name == "Bob")
Console.WriteLine("Вас зовут Robert");
else if (name == "Mike")
Console.WriteLine("Вас зовут Michael");
else
Console.WriteLine("Неизвестное имя");
Тернарная операция
Тернарную операция также позволяет проверить некоторое условие и в зависимости от его истинности выполнить некоторые действия. Она имеет следующий синтаксис:
[первый операнд - условие] ? [второй операнд] : [третий операнд]
Здесь сразу три операнда. В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true, то возвращается второй операнд; если условие равно false, то третий. Например:
int x=3;
int y=2;
int z = x < y ? (x+y) : (x-y);
Console.WriteLine(z); // 1
Здесь первый операнд (то есть условие) представляет выражение x < y. Если оно равно true, то возвращается второй операнд - (x+y), то есть результат операции сложения. Если условие равно false, то возвращается третий операнд - (x-y).
Результат тернарной операции (то есть второй или третий операнд в зависимости от условия) присваивается переменной z.