十四天了:C#学习第十四天

当使用foreach时,只要注意一个问题:当确定循环变量的类型时,应该格外小心。选择错误的类型并没有受到编译器的检测,但它会在运行时受检测,且会引发一个异常。

6.2.3 while 语句

当你想执行一个内含语句0次或更多次时,while语句正是你所盼望的:

while (条件) 内含语句

条件语句——它也是一个布尔表达式 ——控制内含语句被执行的次数。你可以使用 break 和continue语句来控制while语句中的执行语句,它的运行方式同在for语句中的完全相同。

为了举例while的用法,清单 6.6 说明如何使用一个 streamreader类输出c#源文件到屏幕。

清单 6.6 显示一个文件的内容

1: using system;
2: using system.io;
3:
4: class whiledemoapp
5: {
6: public static void main()
7: {
8: streamreader sr = file.opentext (\"whilesample.cs\");
9: string strline = null;
10:
11: while (null != (strline = sr.readline()))
12: {
13: console.writeline(strline);
14: }
15:
16: sr.close();
17: }
18: }

代码打开文件 whilesample.cs, 接着当readline 方法返回一个不等于null的值时,就在屏幕上显示所读取的值。注意,我在while条件语句中用到一个赋值。如果有更多的用&&和¦¦连接起来的条件语句,我不能保证它们是否会被执行,因为存在着“短路”的可能。

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语句。语句完成各种需要,包括执行固定次数的循环、列举收集元素和执行基于某些条件的任意次数的语句。

Tags: 

延伸阅读

最新评论

发表评论