Тернарный оператор ?: в C#
В этой статье вы узнаете, что такое тернарный оператор и как его использовать.
Тернарный оператор — аналог условной конструкции
if...else. Если вы еще не знакомы с оператором условияif, советуем сначала познакомиться с ним.
Почему тернарный
В C# существует три вида операторов:
1. Унарные операторы работают с одним операндом. Например, оператор - — унарный: из значения 7 он может сделать значение -7.
2. Бинарные операторы работают с двумя операторами. Например, оператор сложения + может сложить два числа: 2 + 5.
3. Тернарные операторы работают с тремя операторами.
Синтаксис
Условие ? Выражение1 : Выражение2;
Как работает
-
Если
Условие=true, оператор возвращаетВыражение1. -
Если
Условие=false, оператор возвращаетВыражение2.
С помощью тернарного оператора можно укоротить этот код:
if (number % 2 == 0)
{
isEven = true;
}
else
{
isEven = false;
}
На языке тернарного оператора он будет выглядеть так:
isEven = (number % 2 == 0) ? true : false;
Пример. Определяем, является ли число четным
using System;
namespace Conditional
{
class Ternary
{
public static void Main(string[] args)
{
int number = 2;
bool isEven;
isEven = (number % 2 == 0) ? true : false ;
Console.WriteLine(isEven);
}
}
}
Вывод:
true
Что здесь происходит
1. Сначала мы присваиваем переменной number значение 2.
2. Затем мы с помощью тернарного оператора проверяем, является ли число четным — это Условие.
3. Число 2 — четное, поэтому условие (number % 2 == 0) вернет true — это Выражение1.
4. Результат записывается в переменную isEven.
Примечание. Тернарный оператор также может возвращать числа, строки символы.
Совет. Вместо того чтобы хранить возвращаемые значения в переменной
isEven, можно сразу выводить их на экран. Так эффективнее. Например:
Console.WriteLine((number % 2 == 0) ? true : false);
Когда лучше использовать
Тернарный оператор позволяет заменить несколько строк кода всего лишь одной. Но злоупотреблять им не стоит.
Например, мы можем заменить условную конструкцию if..else if:
if (a > b)
{
result = "a больше, чем b";
}
else if (a < b)
{
result = "b больше, чем a";
}
else
{
result = "a равно b";
}
всего одной строкой:
result = a > b ? "a больше, чем b" : a < b ? "b больше, чем a" : "a равно b";
Тернарный оператор уменьшает длину кода, но ухудшает понимание логики программы.
Поэтому тернарный оператор лучше использовать только для замены простых конструкций if...else.
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.