3.2 流控制概述
在本章后面的代码清单3-42中,我们展示了如何以一种简单的方式来查看一个数的二进制形式。然而,即便如此简单的一个程序,不用控制流语句也是写不出来的。控制流语句控制着程序的执行路径。本节将讨论如何基于条件检查来改变语句的执行顺序。稍后,你将学习如何通过循环结构来反复执行一组语句。
表3-1总结了所有控制流语句。注意,“常规语法结构”这一列给出的只是常见的语句用法,而不是完整的词法结构(lexical structure)。
表3-1中的embedded-statement泛指任何语句,其中包括代码块(但不包括声明语句或者标签)。
表3-1中的每个C#控制流语句都出现在了附录B的tic-tac-toe程序中。这个程序会显示一个tic-tac-toe棋盘,提示每个玩家,并在每一次走棋之后更新。
表3-1 控制流语句
|
语句 |
常规语法结构 |
示例 |
|
|
if语句 |
if (boolean-expression) embedded-statement |
if (input == "quit") { Console.WriteLine("Game end"); return; } |
|
|
if (boolean-expression) embedded-statement else embedded-statement |
if (input == "quit") { Console.WriteLine("Game end"); return; } else GetNextMove(); |
| |
|
while语句 |
while (boolean-expression) embedded-statement |
while(count < total) { Console.WriteLine("count = {0}", count); count++; } |
|
|
do while语句 |
do embedded-statement while (boolean-expression) ; |
do { Console.WriteLine("Enter name:"); input = Console.ReadLine(); } while(input != "exit"); |
|
|
for语句 |
for (for-initializer; boolean-expression; for-iterator) embedded-statement |
for (int count = 1; count <= 10; count++) { Console.WriteLine("count = {0}", count); } |
|
|
foreach语句 |
foreach (type identifier in expression) embedded-statement |
foreach (char letter in email) { if(!insideDomain) { if (letter == '@') { insideDomain = true; } continue; } Console.Write(letter); } |
|
|
continue语句 |
continue; |
| |
|
switch语句 |
switch(governing-type- expression) { ... case const-expression: statement-list jump-statement default: statement-list jump-statement } |
switch(input) { case "exit": case "quit": Console.WriteLine("Exiting app...."); break; case "restart": Reset(); goto case "start"; case "start": |
|
(续)
|
语句 |
常规语法结构 |
示例 |
|
|
|
GetMove(); break; default: Console.WriteLine(input); break; } |
|
break语句 |
break; |
|
|
goto语句 |
goto identifier; |
|
|
goto case const-expression; |
| |
|
goto default; |
|
在本章剩余的部分,我们将更详细地讨论每一条语句。讨论了if语句之后,在接触其他控制流语句之前,我们首先解释代码块、作用域、布尔表达式以及按位运算符的概念。由于C#与其他语言具有很多相似性,部分读者可能发现这个表格非常熟悉。这部分读者可以直接跳到3.9节,或者直接跳到本章的小结部分。
| 回书目 上一节 下一节 |