C#学习笔记 - 标签、goto语句

发布时间 2023-05-24 16:48:45作者: Phonk

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 标签标识符;
注意
  1. goto语句必须在标签语句的作用域内

    • goto语句可以跳到它所在块的任何标签语句, 或跳出任何嵌套它的块内的标签语句

    • goto语句不能跳入嵌套在其所在块内的任何块

  2. goto语句会弱化结构化, 难以调试维护代码

switch中的goto

  • 这些goto语句把控制转移到switch语句内部相应命名的分支标签

  • 但是goto只能用来引用编译时常量

goto case 1;
goto case default;