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