c#入门-goto语句
goto语句
goto语句可以用来跳转当前执行的语句。
早在循环发明前可以用来代替循环使用。
但在循环发明后,因为循环更可观,安全,逐渐的不建议使用goto语句。
如果一个程序里到处包含goto语句,那么可读性极差。
你需要找到下一句跳转执行的语句在哪里,理解成本会很大。
对程序也不好。即将运行的指令都是按顺序存放的,上窜下跳性能也会有影响。
但是goto可以执行比循环更复杂的跳转,
不依赖于循环就能跳转到一个无关的地方,
或者一次性跳出多层循环。
声明标签
标签使用标识符+冒号表示,写在一条语句前面。
这个标签标记了他后面的那条语句。
A:
Console.WriteLine("A");
B:
Console.WriteLine("B");
标签同样有作用域的限制。
所以虽然goto的范围很大,但仍然不能直接跳转进子语句块中。
执行跳转
执行跳转的语法是goto+空格+标签。
int i = 12;
if (i > 10)
goto A;
else
goto B;
标签作用域整个语句块。所以这个跳转语句可以放在标签声明前,也可以放在标签声明后。
即便有goto的存在,编译器也会尽心尽力地检查哪些变量是没用初始值的。
虽然编译器能检查出来,但是人很难看出并理解为什么不是一定经过初始值赋值。
int i = 12;
int a;
if (i > 10)
goto A;
else
goto B;
a = 12;
A:
Console.WriteLine("A");
a = 13;
B:
Console.WriteLine("B");
Console.WriteLine(a);