VSTO开发入门教程
上QQ阅读APP看书,第一时间看更新

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