?: 運算子 (C# 參考)
更新:2007 年 11 月
條件運算子 (?:) 是根據布林 (Boolean) 運算式的值,決定傳回兩個值的其中一個。此條件運算子的格式為
condition ? first_expression : second_expression;
備註
如果條件為 true 會評估第一個運算式並算出結果,如果為 false 則評估第二個運算式並算出結果。始終只會評估兩個運算式的其中一個。
需要用到 if-else 結構的計算,可以用條件運算子表達得更精確且優雅。例如,在計算 sin 函式時若要避免除數為零的情況,您可以這樣撰寫程式
if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
或使用條件運算子
s = x != 0.0 ? Math.Sin(x)/x : 1.0;
條件運算子為右向關聯 (Right-Associative) 的運算子,所以下列運算式:
a ? b : c ? d : e
將評估為
a ? b : (c ? d : e)
而非
(a ? b : c) ? d : e
條件運算子不能被多載。
範例
class ConditionalOp
{
static double sinc(double x)
{
return x != 0.0 ? Math.Sin(x) / x : 1.0;
}
static void Main()
{
Console.WriteLine(sinc(0.2));
Console.WriteLine(sinc(0.1));
Console.WriteLine(sinc(0.0));
}
}
/*
Output:
0.993346653975306
0.998334166468282
1
*/