English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# базовый учебник

C# продвинутый учебник

C# направленный на объекты (OOP)

Триoperator в C#

C# содержит оператор принятия решения ? :называется оператором условия или триплетным оператором. Это сокращение для условия if-else.

Грамматика:

condition ? statement 1 : statement 2

Триплетный оператор начинается с булева условия. Если значение condition равно true, он выполняет statement 1 после ?,否则 выполняет второе statement после :.

Следующий пример демонстрирует использование三元运算ника.

int x = 20, y = 10;
var result = x > y ? "x大于y" : "x小于y";
Console.WriteLine(result);
Вывод:
x大于y

Условие expressions x > y возвращает true, поэтому выполняется первая строка после ?.

Следующие строки выполняют вторую строку.

int x = 10, y = 100;
var result = x > y ? "x大于y" : "x小于y";
Console.WriteLine(result);
Вывод:
x小于y

Таким образом,三元运算ник является сокращением для оператора if-else. Пример можно переписать с использованием условия if-else, как показано ниже.

int x = 10, y = 100;
if (x > y) {
    Console.WriteLine("x大于y");
} else {
    Console.WriteLine("x小于y");
}
Вывод:
x大于y

Нестирование三元运算符

Нesting of ternary operators is achieved by using the condition expression as the second statement.

int x = 10, y = 100;
string result = x > y ? "x大于y" : ; 
                    x < y ? "x меньше y" : 
                        x == y ? "x равен y" : "Нет результата";
Console.WriteLine(result);

Триoperator имеют правостороннюю ассоциативность. Результат вычисления выражения a ? b : c ? d : e равен a ? b : (c ? d : e), а не (a ? b : c) ? d : e.

var x = 2, y = 10;
var result = x * 3 > y ? x : y > z ? y : z;
Console.WriteLine(result);