Break и label: "Отсутствует метка MyLabel"

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

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

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

Отсутствует метка MyLabel.

Что не так?

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

например

l1: while
 l2: while
  l3: while
   break l1
   l4: while