流程控制
条件语句
if语句
if (condition)statement(s)elsestatement(s)/***************************/static void Main(string[] args){Console.WriteLine("Type in the string");string input;input = Console.ReadLine();if (input == " "){Console.WriteLine("You typed in an empty string");}else if (input.Length < 5){Console.WriteLine("The string had less than 5 characters");}else if (input.Length < 10){Console.WriteLine("The string had less than 10 characters");}Console.WriteLine("The string was " + input);}/***************************/
switch语句
switch(expression){case constant-expression :statement(s);break;case constant-expression :statement(s);break;/* 您可以有任意数量的 case 语句 */default : /* 可选的 */statement(s);break;}
· switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
· 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
· case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量。
· 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
· 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
· 不是每一个 case 都需要包含 break。如果 case 语句为空,则可以不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
· C# 不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。
· 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
· C# 不支持从一个 case 标签显式贯穿到另一个 case 标签。如果要使 C# 支持从一个 case 标签显式贯穿到另一个 case 标签,可以使用 goto 一个 switch-case 或 goto default。
循环语句
for循环
for ( init; condition; increment ){statement(s);}
下面是 for 循环的控制流:
1. init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
2. 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
3. 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。
![]() |
|
|---|---|
using System;namespace Loops{class Program{static void Main(string[] args){/* for 循环执行 */for (int a = 10; a < 20; a = a + 1){Console.WriteLine("a 的值: {0}", a);}Console.ReadLine();}}}/******a 的值: 10a 的值: 11a 的值: 12a 的值: 13a 的值: 14a 的值: 15a 的值: 16a 的值: 17a 的值: 18a 的值: 19******/
while循环
do…while循环

do{statement(s);}while( condition );using System;namespace Loops{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 10;/* do 循环执行 */do{Console.WriteLine("a 的值: {0}", a);a = a + 1;} while (a < 20);Console.ReadLine();}}}/************a 的值: 10a 的值: 11a 的值: 12a 的值: 13a 的值: 14a 的值: 15a 的值: 16a 的值: 17a 的值: 18a 的值: 19*************/
foreach循环
C# 也支持 foreach 循环,使用foreach可以迭代数组或者一个集合对象。
/**********通过 foreach 循环输出整型数组中的元素。通过 for 循环输出整型数组中的元素。foreach 循环设置数组元素的计算器。**********/class ForEachTest{static void Main(string[] args){int[] fibarray = new int[] { 0, 1, 1, 2, 3, 5, 8, 13 };foreach (int element in fibarray){System.Console.WriteLine(element);}System.Console.WriteLine();// 类似 foreach 循环for (int i = 0; i < fibarray.Length; i++){System.Console.WriteLine(fibarray[i]);}System.Console.WriteLine();// 设置集合中元素的计算器int count = 0;foreach (int element in fibarray){count += 1;System.Console.WriteLine("Element #{0}: {1}", count, element);}System.Console.WriteLine("Number of elements in the array: {0}", count);}}/********011235813011235813Element #1: 0Element #2: 1Element #3: 1Element #4: 2Element #5: 3Element #6: 5Element #7: 8Element #8: 13Number of elements in the array: 8********/
跳转语句
goto语句
continue语句
continue;
using System;namespace Loops{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 10;/* do 循环执行 */do{if (a == 15){/* 跳过迭代 */a = a + 1;continue;}Console.WriteLine("a 的值: {0}", a);a++;} while (a < 20);Console.ReadLine();}}}/*********a 的值: 10a 的值: 11a 的值: 12a 的值: 13a 的值: 14a 的值: 16a 的值: 17a 的值: 18a 的值: 19*********/
break语句

break;using System;namespace Loops{class Program{static void Main(string[] args){/* 局部变量定义 */int a = 10;/* while 循环执行 */while (a < 20){Console.WriteLine("a 的值: {0}", a);a++;if (a > 15){/* 使用 break 语句终止 loop */break;}}Console.ReadLine();}}}/**********a 的值: 10a 的值: 11a 的值: 12a 的值: 13a 的值: 14a 的值: 15***********/
return
控制程序流程
选择程序流程
迭代语句
foreach
foreach语法:
foreach(type identifier in expression)
type identifie:声明了一个迭代变量,是局部变量,其作用域为嵌套的语句。
expression:
如果类型为数组,就执行IEnumberable的隐士转换。
如果类型为集合,要么实现了IEnumberable或IEnumberable
遍历集合中的元素时,迭代变量指向当前元素。
string s = "This is a test";foraech(char c in s){Console.WriteLine(c);}
跳转语句
break语句
continue语句
return语句

