逻辑控制
所谓的逻辑控制,就是控制计算机阅读代码的一个顺序逻辑,作用提高算法的执行效率
条件判断语句
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)
1.if语句(一个if语句由一个布尔表达式后跟一个或多个语句组成.)
if(a==b)
{
/*如果布尔表达式为真将执行的语句*/
}
如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行
2.if…else语句(一个if语句后可跟一个可选的else语句,else语句在布尔表达式为假时执行)
if (a==b)
{
/* 如果布尔表达式为真将执行的语句 */
}
else
{
/* 如果布尔表达式为假将执行的语句 */
}
如果布尔表达式为true,则执行if块内的代码。如果布尔表达式为false,则执行else块内的代码
当使用 if…else语句时,以下几点需要注意:
A. 一个 if 后可跟零个或一个else,它必须在任何一个 else if 之后。
B. 一个 if 后可跟零个或多个 else if,它们必须在 else 之前。
C.一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。
if(a==b)
{
/* 当布尔表达式 1 为真时执行 */
}
else if(a==c)
{
/* 当布尔表达式 2 为真时执行 */
}
else if(a==d)
{
/* 当布尔表达式 3 为真时执行 */
}
else
{
/*以上条件都不为真时执行*/
}
1.嵌套if语句(可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。)
if(a==b)
{
/* 当布尔表达式 1 为真时执行 */
if(a==c)
{
/* 当布尔表达式 2 为真时执行 */
}
}
2.switch语句(一个 switch 语句允许测试一个变量等于多个值时的情况)
switch(expression)
{
case constant-expression : statement(s);
break;
case constant-expression : statement(s);
break;
/* 您可以有任意数量的 case 语句 */
default : /* 可选的 */statement(s);
break;
}
switch 语句必须遵循下面的规则 :
- 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 标签,可以使用 go to 一个 switch-case 或 goto default。
循环控制语句
for循环
for ( init; condition; increment )
{
statement(s);
}
下面是 for 循环的控制流:
init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可
接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for循环的下一条语句。
在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空, 只要在条件后有一个分号出现即可。
条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条 件变为假时,for 循环终止。
三者缺少任意一个这个循环语句变成死循环
foreach循环
使用foreach可以迭代数组或者一个集合对象,遍历一个集合中的每一项,遍历到一项循环一次
foreach(var temp in arrayOfIntts)
{
循环体
}
while和do...while语句
while循环
要给定的条件为真,C#中的 while 循环语句会重复执行一个目标语句。
while(condition)
{
statement(s);
}
在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为真。
当条件为真时执行循环。当条件为假时,程序流将继续执行紧接着循环的下一条语句
do...while循环
不像 for 和 while 循环,它们是在循环头部测试循环条件。do...while 循环是在循环的尾部检查它的条件。do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。
do
{
statement(s);
}while( condition )
条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。
控制语句
break语句:break控制循环语句跳出当前循环
当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。它可用于终止 switch 语句中的一个 case。
如果使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
continue语句:控制程序跳出本次循环进入下一次循环
C#中的 continue 语句有点像 break 语句。但它不是强迫终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。对于for循环,continue语句会导致执行条件测试和循环增量部分。对于while和do...while循环,continue语句会导致程序控制回到条件测试上。
return语句:控制程序代码直接跳出从他往后的所有代码直到本次条件结束
把控制权返回给方法的调用者,直接结束当前的事件或方法
无限循环
如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环
for ( init; condition; increment )
{
statement(s);
}
缺少init,condition,increment,其中之一都会构成死循环,也就是无限循环。