条件运算符 (?:) 根据布尔型表达式的值返回两个值中的一个。条件运算符的格式如下
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;
条件运算符为右联运算符,因此该形式的表达式
a ? b : c ? d : e
按如下规则计算:
a ? b : (c ? d : e)
而不是按照下面这样计算:
(a ? b : c) ? d : e
不能重载条件运算符。
// cs_operator_conditional.cs using System; class MainClass { 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)); } }
0.993346653975306 0.998334166468282 1