6.9 条件运算符

条件运算符用于比较两个操作数的逻辑值,并返回一个逻辑值作为结果,如表6-7所示。

6.9 条件运算符 - 图1

这些运算符的语法如下:

❑表达式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个值。