C# 三元运算符

C#包含一个决策运算符 ? :,称为条件运算符 或 三元运算符。它是 if-else 条件的缩写。

语法:

condition ? statement 1 : statement 2

三元运算符从布尔条件开始。如果 condition 的值为true,则它将执行?后的 statement 1 语句,否则将执行 : 之后的第二条语句。

下面的示例演示三元运算符。

int x = 20, y = 10;

var result = x > y ? "x大于y" : "x小于y";

Console.WriteLine(result);
输出:
x大于y

上面的条件表达式 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

嵌套三元运算符

嵌套三元运算符是通过将条件表达式作为第二个语句来实现的。

int x = 10, y = 100;

string result = x > y ? "x大于y" : 
                    x < y ? "x小于y" : 
                        x == y ? "x等于y" : "没有结果";

Console.WriteLine(result);

三元运算符是右关联的。表达式 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);