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);
实际上,如果在应用程序中加入这段代码,就会发现编译时,任务列表窗口会显示一个警告,即“Unreachable code detected”和一个行号。
goto语句有它们的用途,但也可能使代码陷入混乱之中。
例如,因使用goto语句而非常难懂的代码如下所示:
start:
int myInteger = 5;
goto addVal;
writeResult:
Console.WriteLine("myInteger = {0}",myInteger);
goto start;
addVar:
myInteger += 10;
goto writeResult;
这是有效的代码,但很难读懂,可以自己试试,看看会发生什么情况。在此之前,应尝试理解这些代码会完成什么任务。
后面再讨论这个语句,因为本章的其他一些结构将使用该语句(但最好不要使用它)。