Изучив способ выхода из вложенного цикла, я решил попробовать использовать 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;
; даже в этом случае я все равно хотел бы выяснить, что вызывает эту ошибку.
goto
может быть полезен в автогенерируемом коде. (async/await эффективно генерирует кучу переходов.) - person Jon Skeet   schedule 30.08.2013exit loop myOuterLoopName;
- person Matthew Watson   schedule 30.08.2013