2.6 条件选择语句
C#中分支控制结构有三种方式:
● 三元运算符
● If…else if…else语句
● switch语句
■2.6.1 三元运算符
语法如下:
result = condition? trueCase : falseCase
首先判断condition是否成立,如果成立,则把trueCase赋给result,反之把falseCase赋给result。
1 int q=8; 2 string result = (q % 2 == 1) ? "奇数" : "偶数"; 3 MessageBox.Show(q+ "是" +result);
上述代码,第2行首先判断q对2求余,结果是否为1,如果是1,则为奇数,否则为偶数。运行后,对话框显示“8是偶数”。
下面再举一个简单选择语句的实例:
1 public void简单选择语句() 2 { //逻辑表达式?结果1:结果2 3 int i = 11; 4 int j = 2; 5 result = i % j == 0 ? "100" : "-100"; 6 }
运行代码后,result返回-100。
具有同样功能的VBA代码如下:
1 Public Sub简单选择语句() 2 'IIF 3 Dim i As Integer, j As Integer 4 i = 11 5 j = 2 6 result = IIf(i Mod j = 0, 100, -100) 7 End Sub
■2.6.2 if语句
if语句是最常用的分支控制语句,典型的代码范例如下:
1 public void if语句() 2 { 3 int i = -3; 4 if (i > 0) 5 { result = "正数"; } 6 else if (i < 0) 7 { result = "负数"; } 8 else 9 { result = "零"; } 10 }
上述代码判断整型变量i的正负情况,如果i大于0,则只执行if后面的语句块;如果i小于0,则只执行elseif后面的语句块;所有条件都不成立,则执行else后面的语句块。
使用if的过程中,要注意if以及else if后面的条件必须用圆括号括起来,每一个分支的语句块最好用花括号括起来。
具有同样功能的VBA代码如下:
1 Public Sub if语句() 2 Dim i As Integer 3 i = -3 4 If (i > 0) Then 5 result = "正数" 6 ElseIf (i < 0) Then 7 result = "负数" 8 Else 9 result = "零" 10 End If 11 End Sub
为了说明if语句中花括号的功能,分析如下代码:
1 public void TestIf() 2 { 3 int i = 0; 4 if (true) 5 { 6 i++; 7 i++; 8 } 9 else 10 i--; 11 i--; 12 MessageBox.Show(i.ToString()); 13 }
运行该过程,对话框会显示1,而不是2。这是因为,if语句中的条件为true,表示if分支恒成立,因此执行语句块中的两行自加代码,i变为2。比较一下代码中第10行和第11行,由于第10行属于else后的语句,因此不被执行。但是第11行不属于if…else语句结构范围,因此无论if结构哪一个分支成立,第11总是执行。为此,对话框返回1。
如果我们把第10行和第11行代码用花括号括起来,则构成了一个语句块,属于else分支,这时候对话框会返回2。
如果我们把第10~12行用花括号括起来,则这三行都属于else分支,这时候运行代码后不出现任何对话框。
■2.6.3 switch语句
switch语句非常类似于if语句,因为它是根据测试的值来有条件地执行代码。
下面的代码用来判断变量i的奇偶性,因此要把比较的数值放在switch后的括号内。i和下面每一个case后的数值作比较,如果相等,则执行其后的语句块。下面代码的含义是:如果i等于1或3或者5,则返回奇数;如果等于2、4、6中的任何一个,则返回偶数;如果所有的case都没匹配上,则执行default后的语句块。
1 public void switch语句() 2 { 3 int i = 3; 4 switch (i) 5 { 6 case 1: 7 case 3: 8 case 5: 9 result = "奇数"; 10 break; 11 case 2: 12 case 4: 13 case 6: 14 result = "偶数"; 15 break; 16 default: 17 result = "不明确"; 18 break; 19 } 20 }
具有同样功能的VBA代码如下:
1 Public Sub Select语句() 2 Dim i As Integer 3 i = 3 4 Select Case (i) 5 Case 1, 3, 5 6 result = "奇数" 7 Case 2, 4, 6 8 result = "偶数" 9 Case Else 10 result = "不明确" 11 End Select 12 End Sub