一.条件判断语句
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可 选的)。
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();
}