【发布时间】:2015-07-16 14:01:47
【问题描述】:
我在 switch 语句中使用 goto 来模拟跌倒行为。
我的 switch 语句使用enum 来确定使用哪种情况。
当包含goto 的case 被执行时,执行会在此时挂起,并且宿主进程开始使用更多的cpu。
我的代码如下所示:
switch (myEnum)
{
case HostClass.EnumType.var1: goto case HostClass.EnumType.var2;
case HostClass.EnumType.var2: myint = 3; break;
default: break;
}
为什么我的 switch 语句挂在 goto 上?在线阅读,这似乎是一种常见的模式。
删除 goto 修复它,但我不明白为什么。
【问题讨论】:
-
它没有挂在 goto 上,无法重现!
-
我对这个问题的投票和答案的数量感到惊讶,上面的代码在
goto声明上没有挂起,这个问题是不可重现的。跨度> -
您可能有错字,以至于
goto回到了与您已经使用的相同的case标签,或者您做了几个构成“循环”的goto语句最终又回来了到同一个标签。但是,您的示例代码不会重现该问题。请更加注意包含实际重现您遇到的问题的代码。否则人们只能猜测(他们会!)关于问题是什么。 -
正如@Habib 所说的不可重现:dotnetfiddle.net/yyVJRw
-
原来我有一个错字导致它循环(根据@JeppeStigNielsen 评论)。但我真的在寻找一种失败的方法(根据接受的答案)