6.9 条件运算符
条件运算符用于比较两个操作数的逻辑值,并返回一个逻辑值作为结果,如表6-7所示。
这些运算符的语法如下:
❑表达式1&&表达式2
❑表达式1||表达式2
❑!表达式
❑布尔表达式?结果1:结果2
需要说明的是,条件运算符使用“短路”计算模式。对于逻辑与运算符而言,如果第1个表达式结果为false,那么整个表达式的结果就已经确定了(false),第2个表达式将不会被执行,因此在第2个表达式中放置可能修改变量值的表达式是没有意义的。对于逻辑或运算符而言,如果第1个表达式结果为true,那么整个表达式的结果也已经确定了(true),因此第2个表达式同样不会被执行。
对于C#中唯一的三元运算符(?:)而言,首先计算布尔表达式的值,如果值为true,则整个表达式的结果取结果1,否则取结果2。
下面举例进行说明,如代码清单6-6所示。
代码清单6-6 条件运算符示例
1 using System;
2
3 namespace ProgrammingCSharp4
4{
5 class OperatorSample
6{
7 static void Main()
8{
9 Console.WriteLine((1==0)&&(1==1));//False
10 Console.WriteLine((1==0)||(1==1));//True
11 Console.WriteLine((1==0)||(1==2));//False
12 Console.WriteLine(!(1==0));//True
13 Console.WriteLine((1==0)?1:2);//2
14}
15}
16}
上述代码输出结果为:
False
True
False
True
2
在代码清单6-6中,第9行使用逻辑与运算符(&&),因为第1个表达式(1==0)结果为false,那么整个表达式的结果就已确定为false;第10行使用逻辑或运算符(||),虽然第1个表达式(1==0)结果为false,但第2个表达式(1==1)结果为true,因此整个表达式的结果为true;第11行使用逻辑或运算符,因为两个表达式的结果均为false,因此整个表达式的结果为false;第12行使用逻辑非运算符,因为表达式(1==0)的结果为false,那么整个表达式的结果为true;第13行使用三元条件运算符,因为第1个表达式(1==0)的结果为false,因此整个表达式的结果取第2个值——2,否则取第1个值。