C# 包含一个决策运算符 ?: 称为条件运算符或三元运算符。 它是 if else 条件的缩写形式。
condition ? statement 1 : statement 2
三元运算符以布尔条件开始。 如果此条件评估为真,则它将执行 ? 之后的第一条语句,否则将执行 : 之后的第二条语句。
以下示例演示了三元运算符。
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 = 20, y = 10;
if (x > y)
Console.WriteLine("x比y大");
else
Console.WriteLine("x小于y");
输出
x比y大
##嵌套的三元运算符 Nested Ternary Operator
通过包含条件表达式作为第二个语句,可以使用嵌套的三元运算符。 (可读性不好)
static void Main(string[] args)
{
int x = 10, y = 100;
string result = x > y ? "x大于y" :
x < y ? "x小于y" :
x == y ? "x 等于 y" : "没结果";
Console.WriteLine(result);
}
输出
x小于y
三元运算符是从右到左结合的。表达式 a ? b : c ? d : e 会按这个执行 a ? b : (c ? d : e), 而不是 (a ? b : c) ? d : e.
示例
static void Main(string[] args)
{
var x = 2;
var y = 10;
var z = 9;
var result = x * 3 > y ? x : y > z ? y : z;
Console.WriteLine(result);
}
输出 10