[英]C# - goto inside a switch statement hangs
我在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
。 只要这样做:
switch (myEnum)
{
case HostClass.EnumType.var1:
case HostClass.EnumType.var2:
myint = 3; break;
default: break;
}
更新资料
OK,所以原因(我相信)它不工作是因为你需要一个地方 goto
。 例如:
for(var i = 0; i < 100; i+=1)
{
if(i == 50)
{
goto Outer;
}
}
Outer:
Console.WriteLine("Done");
这是一个非常人为的例子。
我不认为这可以解释您的代码为什么挂起。 我唯一想到的就是goto
正在等待地址?
如NeilP的评论中所述,您只能陷入空的案例陈述中。 这仍然不能解释为什么您的代码挂在“ goto”上。 不应该这样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.