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

2.8 流程控制语句

编程应用中,有时需要提前跳出循环,或提前进入下一轮循环。C#提供了4个命令用来控制循环结构:

● break语句:立即终止循环,跳到循环体外。

● continue语句:立即终止当次循环,继续执行下次循环。

● goto语句:跳出循环,跳转到指定标记好的语句行上。

● return语句:跳出循环,跳出包含该循环的过程或函数。

■2.8.1 break语句

    1         public void break语句()
    2         {   //跳出循环
    3             for (int i = 1; i < 5; i++)
    4             {
    5                 if (i > 3)
    6                 { break; }
    7                 else
    8                 { result += i + "\n"; }
    9             }
    10        }

上述代码,for循环体内嵌套有if语句,当i自加大于3的时候,跳出for循环,直接跳转到代码中第10行。因此变量result最后的结果是1 2 3。

具有同样功能的VBA代码如下:

    1  Public Sub exitfor语句()
    2     '跳出循环,类似于C#中的break语句
    3     Dim i As Integer
    4     For i = 1 To 4
    5         If (i > 3) Then
    6         Exit For
    7         Else
    8             result = result & i & vbNewLine
    9         End If
    10     Next i
    11 End Sub

■2.8.2 continue语句

continue语句的作用是越过循环体内continue之后的代码,直接进入下一次循环。

    1         public void continue语句()
    2         {   //越过本次循环
    3             for (int i = 1; i < 10; i++)
    4             {
    5                 if (i == 3 || i == 7)
    6                 { continue; }
    7                 else
    8                 { result += i + "\n"; }
    9             }
    10        }

上述代码,当i循环到3或者7时,什么都不做,直接让i自加继续循环。因此代码中的result最后的结果是:1 2 4 5 6 8 9。

■2.8.3 goto语句

goto语句的作用是跳转到指定的标号。

    1         public void TestGoto()
    2         {
    3             int i;
    4             int total = 0;
    5             for (i = 1; i <= 10; i++)
    6             {
    7                 if (i > 5)
    8                 {
    9                     goto label1;
    10                }
    11                else
    12                    total += i;
    13            }
    14        label1:
    15            MessageBox.Show(total.ToString());
    16        }

上述代码,循环变量i从1开始循环,当i不大于5时,把i累加给total,一旦i大于5,跳出for循环,跳转到标号为label1的第14行,显示一个对话框。因此对话框显示的结果为1~5的加和:15。

具有同样功能的VBA代码如下:

    1  Sub testGoto()
    2      Dim i As Integer
    3      Dim total As Integer
    4      For i = 1 To 10
    5         If i > 5 Then
    6             GoTo label1
    7         Else
    8             total = total + i
    9         End If
    10     Next i
    11 label1:
    12     MsgBox total
    13 End Sub

■2.8.4 return语句

return语句不只用于循环体内,也可以用在一般代码中。下面的代码,当i等于3时,代码将直接跳转到第11行。因此result的最终结果是:1 2。

    1         public void return语句()
    2         {   //return是跳出过程,break是跳出循环
    3             for (int i = 1; i < 10; i++)
    4             {
    5                  if (i == 3 || i == 7)
    6                 { return; }
    7                 else
    8                 { result += i + "\n"; }
    9             }
    10            result += "循环体外的语句;\n";
    11        }

具有同样功能的VBA代码如下:

    1  Public Sub exitsub语句()
    2     '类似于C#中的return语句
    3     Dim i As Integer
    4     For i = 1 To 10
    5         If (i = 3 Or i = 7) Then
    6             Exit Sub
    7         Else
    8             result = result & i & vbNewLine
    9         End If
    10     Next i
    11     result = result & "循环体外的语句"
    12 End Sub