C#学习笔记 - 标签、goto语句
1、标签语句
标签标识符: Stament
标签语句的执行如同标签不存在永远, 仅执行Statment部分
-
给语句增加一个标签, 允许控制从代码的其他部分转移到该语句
-
标签语句只允许用在块内部
{
int xyz = 0;
xyz: Console.WriteLine("No problem");
}
(1)标签标识符
-
标签有自己的声明空间, 所以标签中的标识符可以是任何有效的标识符
-
标识符不能是关键字
-
在重叠范围内, 不能和另一个标签标识符相同
(2)作用域
标签在其声明所在的块的外部均不可见, 作用域如下
-
它声明所在的块
-
任何嵌套在该块内部的块
static void Main(string[] args)
{//作用域A
{//作用域B
increment: x++;
{//作用域C
{
//作用域D
}
{
//作用域E
}
}
end: Console.WriteLine("exiting");
}
}
2、goto语句
goto语句无条件的转向一个标签语句
goto 标签标识符;
注意
-
goto语句必须在标签语句的作用域内
-
goto语句可以跳到它所在块的任何标签语句, 或跳出任何嵌套它的块内的标签语句
-
goto语句不能跳入嵌套在其所在块内的任何块
-
-
goto语句会弱化结构化, 难以调试维护代码
switch中的goto
-
这些goto语句把控制转移到switch语句内部相应命名的分支标签
-
但是goto只能用来引用编译时常量
goto case 1;
goto case default;