Ответ 1
К сожалению, нет инструкции exit two levels of for
, но есть несколько способов обхода:
-
Goto. В общем случае использование
goto
считается плохой практикой (и это справедливо), но используяgoto
исключительно для прямого перехода из структурированные операторы управления обычно считаются ОК, особенно если альтернатива заключается в более сложном коде.For Each item In itemList For Each item1 In itemList1 If item1.Text = "bla bla bla" Then Goto end_of_for End If Next Next end_of_for:
-
Маскированный внешний блок
Do For Each item In itemList For Each item1 In itemList1 If item1.Text = "bla bla bla" Then Exit Do End If Next Next Loop While False
или
Try For Each item In itemlist For Each item1 In itemlist1 If item1 = "bla bla bla" Then Exit Try End If Next Next Finally End Try
-
Отдельная функция. Поместите петли внутри отдельной функции, с которой можно выйти с помощью
return
. Это может потребовать, чтобы вы передавали множество параметров, хотя, в зависимости от того, сколько локальных переменных вы используете внутри цикла. Альтернативой было бы превратить блок в многострочный лямбда, поскольку это создаст замыкание над локальными переменными. -
Логическая переменная. Это может сделать ваш код немного менее читаемым, в зависимости от того, сколько слоев вложенных циклов у вас есть:
Dim done = False For Each item In itemList For Each item1 In itemList1 If item1.Text = "bla bla bla" Then done = True Exit For End If Next If done Then Exit For Next