语句块
通常,一个语句块就是指一对大括号。
这对大括号和里面的语句合称语句块。
作用域
一个局部变量的作用域是它所在的语句块。
如果超出这个范围,这个变量是不存在的。
此外,不同语句块里可以申明同名的变量。
虽然一个变量在声明了以后才能使用。但是变量的作用域会往前面延申。
嵌入式语句
if,else,do,while,for,foreach等流程控制语句都可以后面不接语句块,而只接一个语句。
这样的语句称为嵌入式语句。嵌入式语句会被视为紧跟流程控制语句的语句块
Console.WriteLine("请输入一个数");
int i = int.Parse(Console.ReadLine());
if (i < 10)
Console.WriteLine("你输入了一个个位数");
else if (i < 100)
Console.WriteLine("你输入了一个两位数");
else if (i < 1000)
Console.WriteLine("你输入了三位数");
嵌入式语句不能是声明语句,因为这仍有变量的作用域限制。
仅一个声明语句不具有意义。
不建议新手使用嵌入式语句,因为这很容易在修改时被忽略需要添加大括号。
而且,如果嵌入式语句自体也是流程控制语句,
你无法控制他跟随哪一个语句块。
int i = 10;
if (i > 0)
if (i > 4)
Console.WriteLine();
else
Console.WriteLine();
else
Console.WriteLine();
流程控制中的条件部分声明变量的作用域
借由模式匹配或out参数,你可以在写条件的时候同时声明出一个变量。
具体而言,对于各流程控制语句声明变量的作用域,有以下情况:
- if,switch等选择语句的条件部分声明的变量,可以作用到语句块后
- while,do-while,for,foreach等循环语句的条件部分声明的变量,只作用于循环体内部。
- 在switch选择及switch表达式的分支判断中声明的变量,只作用域此分支内部。
- 在switch选择及switch表达式的分支语句块中声明的变量,作用于整个switch内部。