6.2.4 do 语句
C#最后可利用的循环语句是do语句。它与while语句十分相似,仅当经过最初的循环之后,条件才被验证。
do
{
内含语句
}
while (条件);
do语句保证内含语句至少被执行过一次,而且只要条件求值等于真,它们继续被执行。通过使用break语句,你可以迫使运行退出 do 语块。如果你想跳过这一次循环,使用continue语句。
一个如何使用do语句的例子显示在清单 6.7中。它向用户请求一个或多个数字,并且当执行程序退出do循环后计算平均值。
清单 6.7 在do 循环中计算平均值
1: using System;
2:
3: class ComputeAverageApp
4: {
5: public static void Main()
6: {
7: ComputeAverageApp theApp = new ComputeAverageApp();
8: theApp.Run();
9: }
10:
11: public void Run()
12: {
13: double dValue = 0;
14: double dSum = 0;
15: int nNoOfValues = 0;
16: char chContinue = 'y';
17: string strInput;
18:
19: do
20: {
21: Console.Write("Enter a value: ");
22: strInput = Console.ReadLine();
23: dValue = Double.Parse(strInput);
24: dSum += dValue;
25: nNoOfValues++;
26: Console.Write("Read another value?");
27:
28: strInput = Console.ReadLine();
29: chContinue = Char.FromString(strInput);
30: }
31: while ('y' == chContinue);
32:
33: Console.WriteLine("The average is {0}",dSum / nNoOfValues);
34: }
35: }
在这个例子里,我在静态 Main函数中实例化 ComputeAverageApp类型的一个对象。它同样接着调用实例的Run方法,该方法包含了计算平均值所有必要的功能。
do 循环跨越第19~31行。条件是这样设定的:分别回答各个问题 "y",以决定是否要增加另一个值。输入任何其它字符会引起程序退出 do语块,且平均值被计算。
正如你可以从提到的例子看出,do语句和while语句差别不太大——仅有的差别就是条件在什么时候被求值。
6.3 小结
这章解释了如何使用C#中用到的各种选择和循环语句。 if 语句在应用程序中可能是最为常用的语句。当在布尔表达式中使用计算时,编译器会为你留意。但是,你一定要确保条件语句的短路不会阻止必要代码的运行。
switch 语句——尽管同样与C语言的相应部分相似——但也被改善了。直达不再被支持,而且你可以使用字符串标签,对于C程序员,这是一种新的用法。
在这一章的最后部分,我说明如何使用for、foreach、while和do语句。语句完成各种需要,包括执行固定次数的循环、列举收集元素和执行基于某些条件的任意次数的语句。

