Тернарный оператор ?: в 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
.