逻辑控制

所谓的逻辑控制,就是控制计算机阅读代码的一个顺序逻辑,作用提高算法的执行效率

条件判断语句

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)


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 语句必须遵循下面的规则 :

  1. switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个class类型,其中class有一个单一的转换函数将其转换为整型或枚举类型。
  2. 在一个switch中可以有任意数量的case语句。每个case后跟一个要比较的值和一个冒号
  3. case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量。
  4. 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止
  5. 当遇到break语句时,switch终止,控制流将跳转到switch语句后的下一行。
  6. 不是每一个case都需要包含break。如果case语句为空,则可以不包含 break,控制流将会继续后续的case,直到遇到 break 为止。
  7. C# 不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。
  8. 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的
  9. 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,其中之一都会构成死循环,也就是无限循环。