【发布时间】:2013-08-30 14:25:44
【问题描述】:
在研究了退出嵌套循环的方法后,我决定尝试使用goto,
private void example()
{
for (int i = 0; i < 100; i++)
{
for (int ii = 0; ii < 100; ii++)
{
for (int iii = 0; iii < 100; iii++)
{
goto exitMethod;
}
}
}
exitMethod:
}
但由于某种原因,如果我将 goto 标签放在方法的最后,Visual Studio 2012 (Ultimate) 会报错(并且无法编译),
但是如果我把我的代码改成这个,
private void example()
{
for (int i = 0; i < 100; i++)
{
for (int ii = 0; ii < 100; ii++)
{
for (int iii = 0; iii < 100; iii++)
{
goto exitMethod;
}
}
}
exitMethod:
int someUnneededVariable; // Just an example, if I add ANY piece of code the error vanishes.
}
没有出现任何错误(并且可以编译);我搜索了所有我知道的 MSDN 参考资料,但我找不到任何关于此的内容。
我知道使用return; 可以轻松解决这个问题;即便如此,我仍然想找出导致此错误的原因。
【问题讨论】:
-
我知道;但这是原则,据我了解,这应该编译,但事实并非如此。
-
@Sam:不,真的不应该:)
-
至少你在raptor 攻击中幸存下来!
-
@AthomSfere:尝试理解为什么某些代码无效是完全合理的。例如,
goto在 自动生成 代码中很有用。 (async/await 有效地 生成一堆 goto。) -
很遗憾我们没有命名循环,那你可以去
exit loop myOuterLoopName;
标签: c# visual-studio-2012 for-loop nested-loops goto