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);