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

2.7 循环语句

循环,就是指反复执行同一个动作。在C#中,用于循环的结构有:

● while循环

● do循环

● for循环

● foreach循环

■2.7.1 while循环

while的语法结构与if语句非常类似,不同的是,if后面的语句块只执行一次,而while后的语句块反复执行,直至while括号内条件不成立。

    1         public void while循环()
    2         {
    3             int i = 10;
    4             while (i > 0)
    5             {
    6                 result += i + "\n";
    7                 i--;
    8             }
    9         }

上述代码中,i的初值为10,判断i是否大于0,如果条件成立不断地往result中追加i,并且i自减1。因此result最后返回的结果是:10 9 8…3 2 1,因为i为1时,仍然输出,但是自减之后,i变为0, while后的条件不再成立,跳出循环。

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

    1  Public Sub while循环()
    2     Dim i As Integer
    3     i = 10
    4     While (i > 0)
    5         result = result & i & vbNewLine
    6         i = i -1
    7     Wend
    8  End Sub

■2.7.2 do循环

与while循环相比,do循环首先执行一次其后的语句块,然后判断条件是否成立,如果成立则继续执行语句块,如果不成立,则退出do…while循环。

    1         public void do循环()
    2         {   //至少执行一次循环体内容
    3             int i = 10;
    4             do
    5             {
    6                 result += i + "\n";
    7                 i--;
    8             }
    9             while (i > 0);
    10        }

上述代码i初值为10,首先往result后面追加10,然后自减1,然后判断i是否大于0;如果大于0,则继续执行do后的语句块;如果不大于0,则退出循环。

因此,上述代码result最终显示10,9,8, …,3,2,1这10个数字。

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

    1  Public Sub do循环()
    2     '至少执行一次循环体内容
    3     Dim i As Integer
    4     i = 10
    5     Do
    6         result = result & i & vbNewLine
    7         i = i -1
    8     Loop While (i > 0)
    9  End Sub

■2.7.3 for循环

如果要使用固定次数的循环,则该考虑使用for循环。for循环圆括号内分三个部分,依次是初值设定、条件判断和处理。

    1         public void for循环()
    2         {
    3             for (int i = 1; i < 5; i++)
    4             {
    5                 result += i + "\n";
    6             }
    7         }

上述代码中,for循环体内声明一个整型变量i,判断如果i小于5,则执行for循环体的语句块部分,接着自加1,继续判断是否小于5,如此反复执行,直至i不小于5。因此上述代码result最终结果为:1 2 3 4。

注意 for循环体内三个部分是用半角分号隔开,而不是逗号。

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

    1  Public Sub for循环()
    2     For i = 1 To 4 Step 1
    3         result = result & i & vbNewLine
    4     Next i
    5  End Sub

下面再举一个典型的循环实例加深印象:累加从1到100之间所有的偶数之和。

    1         public void TestFor()
    2         {
    3             int total = 0;
    4             for (int i = 2; i <= 100; i += 2)
    5             {
    6                 total += i;
    7             }
    8             MessageBox.Show("偶数和为:" + total);
    9         }

上述代码中,total的初值为0,循环变量i从2到100,步长为2,每循环一次,就把i累加给total,对话框显示“偶数和为2550”。

■2.7.4 foreach循环

foreach循环用于枚举集合类对象中的各个元素,例如列举字符串中的每个字符、数组中的每一个元素等。

    1         public void foreach循环()
    2         {
    3             int[] arr = { 1, 3, 5, 7 };
    4             foreach (int i in arr)
    5             {
    6                 result += i + "\n";
    7             }
    8         }

上述代码中,arr是一个整型数组,foreach循环体内使用变量i代表数组中的每一个元素。

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

    1  Public Sub foreach循环()
    2     Dim arr As Variant, v
    3     arr = Array(1, 3, 5, 7)
    4     For Each v In arr
    5         result = result & v & vbNewLine
    6     Next v
    7  End Sub