4.2 goto语句
C#允许给代码行加上标签,这样就可以使用goto语句直接跳转到这些代码行上。该语句优缺点并存。主要的优点是:这是控制什么时候执行哪些代码的一种简单方式。主要的缺点是:过多地使用这个技巧将使代码晦涩难懂。
goto语句的用法如下:
goto <labelName>;
标签用下述方式定义:
<labelName>:
例如,下面的代码:
int myInteger = 5;
goto myLabel;
myInteger += 10;
myLabel:
Console.WriteLine("myInteger = {0}", myInteger);
其执行过程如下:
myInteger声明为int类型,并赋予值5。
goto语句中断正常的执行过程,把控制权转到标有myLabel:的代码行上。
myInteger的值写入控制台。
下面的第3行代码从未执行。
int myInteger = 5;
goto myLabel;
myInteger += 10;
myLabel:
Console.WriteLine("myInteger = {0}", myInteger);
实际上,如果在应用程序中加入这段代码,会发现编译代码时,“错误列表”(Error List)窗口会显示一个警告,即“检测到无法访问的代码”(Unreachable code detected)和一个行号。在无法执行的代码行中,myInteger下面还有绿色的波浪线。
goto语句有它们的作用,但也可能使代码陷入混乱。尽量不要使用它(使用本章后面介绍的技巧,就可以避免使用它)。