我在switch语句中使用goto
来模拟坠落行为。
我的switch语句使用enum
来确定要使用的案例。
当执行包含goto
的案例时,执行会在此时挂起,并且托管进程开始使用更多的cpu。
我的代码如下所示:
switch (myEnum)
{
case HostClass.EnumType.var1: goto case HostClass.EnumType.var2;
case HostClass.EnumType.var2: myint = 3; break;
default: break;
}
为什么我的switch语句挂在goto上?在线阅读,这似乎是一种常见的模式。
删除goto会修复它,但我不明白为什么。
答案 0 :(得分:9)
您不需要goto
。就这样做:
switch (myEnum)
{
case HostClass.EnumType.var1:
case HostClass.EnumType.var2:
myint = 3; break;
default: break;
}
<强>更新强>
好的,所以(我相信)它不起作用的原因是因为你需要一个地方到goto
。例如:
for(var i = 0; i < 100; i+=1)
{
if(i == 50)
{
goto Outer;
}
}
Outer:
Console.WriteLine("Done");
这是非常设计的例子。
我不认为这可以解释您的代码挂起的原因。我唯一能想到的是goto
正在等待一个地址?
正如NeilP的评论中所提到的,你只能依赖空案例陈述。这仍然无法解释为什么你的代码挂起'goto'。它不应该。