Перерыв и метка "Метка MyLabel отсутствует"

У меня есть такой код:

if(condition1)
{
    break MyLabel;
}
while(true)
{
    //some code here
    MyLabel: if(condition2) break;
    //more code here
}

и я получаю эту ошибку:

Метка MyLabel отсутствует.

В чем дело?

2 ответа

Решение

Вы можете перейти только к метке, которая находится в текстовом вмещающем утверждении. В вашем примере метка НЕ ​​содержится в операторе, который содержит break заявление.

(Для чего это стоит, даже языки более высокого уровня, которые поддерживают goto не позволяйте вам прыгать в середину петли снаружи. Я думаю о C ... и более старых языках, таких как FORTRAN.)

Java позволяет вам взломать, но взлом является незаконным... и вас арестуют:-)

(Извините, я не смог устоять. Для тех, кто не понимает шутки, "взлом" - это когда кто-то входит в ваш дом, чтобы украсть вещи - см. "Взломать и войти"...)

Вы не можете использовать ярлыки в качестве общего способа.
Используйте метки, если вы хотите перейти на более высокий уровень вложенного кода.

например

l1: while
 l2: while
  l3: while
   break l1
   l4: while
Другие вопросы по тегам