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