一、什么是语句
二、表达式语句
三、控制流语句
四、if语句
五、if...else语句
六、while循环
七、do循环
八、for循环
1、for语句中变量的作用域
2、初始化和迭代表达式中的多表达式
初始化表达式和迭代表达式都可以包含多个表达式,只要它们用逗号隔开。
class Program
{
static void Main(string[] args)
{
const int MaxI = 5;
for(int i = 0, j = 10; i < MaxI; i++, j += 10)
{
Console.WriteLine($"{i},{j}");
}
}
}
执行结果:
九、switch语句
switch语句实现多路分支:
- switch语句有一个通常被称为测试表达式或 匹配表达式的参数。之前,这些测试表达式必须是以下数据类型之一:char、string、bool、integer(包括byte、int或long等)或enum,现在C#7.0允许测试表达式为任何类型;
- switch语句包含0个或多个分支块;
- 每个分支块都以一个或多个分支标签开头,每个分支标签(或者最后一个分支标签,如果一个分支块中有多个分支标签的话)后面跟着一个模式表达式,该模式表达式将与测试表达式进行比较。如果测试表达式和模式表达式都是整数类型,则使用C#的相等运算符(==)进行比较。在所有其他情况下,则使用静态方法Object.Equals(test,pattern)进行比较。也就是说,对于非整数类型,C#使用深度比较;
- 每个分支块必须遵守“不穿过规则”,这意味着分支块中的表达语句不能到达终点并且进入下一个分支块。此规则通常通过使用break语句或其他4个跳转语句来结束表达语句列表来实现。但请注意,goto跳转语句不能与非常量switch表达式一起使用;
- 跳转语句包括break、return、continue、goto和throw;
- 在这5个用来结束一个分支块的跳转语句中,break语句是最常用的,break语句会切换执行流程到switch语句的末尾;
- 分支块会按顺序执行,如果其中一个分支块与测试表达式的值匹配,则执行这个分支块,然后控制流会跳转到该分支块中使用的跳转语句指定的位置。由于break语句时最常用的跳转语句,所以通常控制流会跳转到switch语句结束后的第一行可执行代码;
如上图:
- 测试表达式(也称匹配表达式)TestExpr在结构的顶端求值;
- 如果TestExpr的值等于第一个分支标签中的模式表达式PatternExpr1的值,将执行该分支标签后边的语句列表,直到遇到一个跳转语句;
- default分支是可选的,但如果包括了,就必须以一条跳转语句结束;
1、分支示例
static void Main()
{
for(int x = 1; x < 6; x++)
{
switch(x) //测试表达式
{
case 2:
Console.WriteLine($"x is {x} -- In Case 2");
break;
case 5:
Console.WriteLine($"x is {x} -- In Case 5");
break;
default:
Console.WriteLine($"x is {x} -- In Default case");
break;
}
}
}
执行结果:
2、其他类型的模式表达式
case标签由关键字case和其后边的模式构成,模式可以是简单的值,例如Hello或者55,也可以是一