vb.net의 중첩 된 for 또는 루프에서 벗어나려면 어떻게해야합니까?
나는 exit for를 사용해 보았지만 루프 하나만 점프하거나 깨졌습니다.
다음을 위해 어떻게 만들 수 있습니까?
for each item in itemList
for each item1 in itemList1
if item1.text = "bla bla bla" then
exit for
end if
end for
end for
답변
안타깝게도 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
답변
루프를 서브 루틴에 넣고 호출 return
답변
외부 루프를 while 루프로 만들고 if 문에서 “Exit While”을 만듭니다.
답변
나는 몇 번 “exit for”를 입력하는 실험을했고 그것이 효과가 있다는 것을 알아 차렸고 VB는 나에게 소리를 지르지 않았다. 내가 생각하는 옵션이지만 단지 나빠 보였다.
최선의 선택은 Tobias가 공유하는 것과 유사하다고 생각합니다. 코드를 함수에 넣고 루프에서 벗어나고 싶을 때 반환되도록하십시오. 너무 깨끗해 보입니다.
For Each item In itemlist
For Each item1 In itemlist1
If item1 = item Then
Return item1
End If
Next
Next
답변
For i As Integer = 0 To 100
bool = False
For j As Integer = 0 To 100
If check condition Then
'if condition match
bool = True
Exit For 'Continue For
End If
Next
If bool = True Then Continue For
Next
답변
for-to 루프를 종료하려면 인덱스를 한계 이상으로 설정하기 만하면됩니다.
For i = 1 To max
some code
if this(i) = 25 Then i = max + 1
some more code...
Next`
아버지.