三元运算符 Ternary Operator ?:

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

上一篇:C# if else
下一篇:C# switch
最近更新的
...