逻辑控制语句.循环语句和事件

一.条件判断语句
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可 选的)。
1.判断语句
(1):if语句(一个if语句由一个布尔表达式后跟一个或多个语句组成。)

if(boolean_expression)
{
   /* 如果布尔表达式为真将执行的语句 */
}

如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。

if (comboBox1.SelectedItem.ToString()=="红色")
            {
                this.BackColor = Color.Red;
            }

(2)if…else语句(一个if语句后可跟一个可选的else语句,else语句在布尔表达式为假时执行。)

if(boolean_expression)
{
   /* 如果布尔表达式为真将执行的语句 */
}
else
{
  /* 如果布尔表达式为假将执行的语句 */
}

如果布尔表达式为true,则执行if块内的代码。如果布尔表达式为false,则执行else块内的代码。
if…else语句(一个if语句后可跟一个可选的else if…else语句,这可用于测试多种条件。)
当使用 if…else if…else 语句时,以下几点需要注意:
a. 一个 if 后可跟零个或一个else,它必须在任何一个 else if 之后。
b. 一个 if 后可跟零个或多个 else if,它们必须在 else 之前。
c. 一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。

if(boolean_expression 1)
{
   /* 当布尔表达式 1 为真时执行 */
}
else if( boolean_expression 2)
{
   /* 当布尔表达式 2 为真时执行 */
}
else if( boolean_expression 3)
{
   /* 当布尔表达式 3 为真时执行 */
}
else 
{
   /* 当上面条件都不为真时执行 */
}

(3)嵌套if语句(可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。)

if( boolean_expression 1)
{
   /* 当布尔表达式 1 为真时执行 */
   if(boolean_expression 2)
   {
      /* 当布尔表达式 2 为真时执行 */
   }
}

可以嵌套 else if…else,方式与嵌套 if 语句相似。
(4). switch语句(一个 switch 语句允许测试一个变量等于多个值时的情况。)

switch(expression){
    case constant-expression  :
       statement(s);
       break; 
    case constant-expression  :
       statement(s);
       break; 
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
       break; 
}

switch 语句必须遵循下面的规则:

a. switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个class类型,其中class有一个单一的转换函数将其转换为整型或枚举类型。
b. 在一个switch中可以有任意数量的case语句。每个case后跟一个要比较的值和一个冒号。
c. case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量。
d.当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止
e. 当遇到break语句时,switch终止,控制流将跳转到switch语句后的下一行。
f.不是每一个case都需要包含break。如果case语句为空,则可以不包含 break,控制流将会继续后续的case,直到遇到 break 为止。
g.C# 不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。
h.一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
j. C# 不支持从一个case标签显式贯穿到另一个case标签。如果要使C#支持从一个case标签显式贯穿到另一个case标签,可以使用 go to 一个 switch-case 或 goto default。
(5)嵌套switch语句(可以在一个 switch 语句内使用另一个 switch 语句。)

switch(ch1) 
{
   case 'A': 
      printf("这个 A 是外部 switch 的一部分" );
      switch(ch2) 
      {
         case 'A':
            printf("这个 A 是内部 switch 的一部分" );
            break;
         case 'B': /* 内部 B case 代码 */
      }
      break;
   case 'B': /* 外部 B case 代码 */
}

二.循环语句
(1)for循环语句
一个 for 循环是一个允许编写一个执行特定次数的循环的重复控制结构。

for ( init; condition; increment )
{
   statement(s);
}

下面是 for 循环的控制流:
init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。
(2)while循环
只要给定的条件为真,C#中的 while 循环语句会重复执行一个目标语句。

while(condition)
{
   statement(s);
}

在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。
当条件为假时,程序流将继续执行紧接着循环的下一条语句。
(3)foreach循环
使用foreach可以迭代数组或者一个集合对象,遍历一个集合中的每一项,遍历到一项循环一次

foreach(var temp in arrayOfIntts)
{
循环体
}

(4)do…while循环

不像 for 和 while 循环,它们是在循环头部测试循环条件。do…while 循环是在循环的尾部检查它的条件。do…while 循环与 while 循环类似,但是 do…while 循环会确保至少执行一次循环。

do
{
   statement(s);
}while( condition );

条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。

如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。

(5)嵌套循环

C#允许在一个循环内使用另一个循环
(6)循环控制语句
循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的对象都会被销毁。
(7)break语句
C# 中 break 语句有以下两种用法:
a.当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
b.它可用于终止 switch 语句中的一个 case。
如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
(8)continue语句
C#中的 continue 语句有点像 break 语句。但它不是强迫终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。
对于for循环,continue语句会导致执行条件测试和循环增量部分。对于while和do…while循环,continue语句会导致程序控制回到条件测试上。
(9)return语句
把控制权返回给方法的调用者,直接结束当前的事件或方法

在这里插入图片描述
(10)无限循环
如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。
(11)GetType方法
基本上每个对象都具有GetType方法,这个方法是用来获取所使用的对象的类型
三.事件
(1)添加事件

//事件的添加:+、=、Tab、Tab
                btn.Click += Btn_Click;

(2)事件中的sender参数

sender参数:获取事件的发起者对象

 private void Btn_Click(object sender, EventArgs e)
        {
            //sender本质是Button对象
            string index = (sender as Button).Tag.ToString();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值