C#包含一個決策運算符 ? :,稱為條件運算符 或 三元運算符。它是 if-else 條件的縮寫。
語法:
condition ? statement 1 : statement 2
三元運算符從布爾條件開始。如果 condition 的值為true,則它將執(zhí)行?后的 statement 1 語句,否則將執(zhí)行 : 之后的第二條語句。
下面的示例演示三元運算符。
int x = 20, y = 10; var result = x > y ? "x大于y" : "x小于y"; Console.WriteLine(result);
x大于y
上面的條件表達式 x > y 返回true,因此 ? 之后的第一個語句將被執(zhí)行。
下面的語句執(zhí)行第二個語句。
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
嵌套三元運算符是通過將條件表達式作為第二個語句來實現(xiàn)的。
int x = 10, y = 100; string result = x > y ? "x大于y" : x < y ? "x小于y" : x == y ? "x等于y" : "沒有結(jié)果"; Console.WriteLine(result);
三元運算符是右關(guān)聯(lián)的。表達式 a ? b : c ? d : e 的計算結(jié)果為 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);