programing

vb.net 에서 에 대한 차단/종료 중첩

lastmoon 2023. 6. 6. 10:32
반응형

vb.net 에서 에 대한 차단/종료 중첩

vb.net 에서 중첩 또는 순환을 수행하려면 어떻게 해야 합니까?

저는 출구를 사용하려고 했지만 루프 전용으로 하나만 뛰거나 부러졌습니다.

다음을 위해 어떻게 해야 합니까?

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구조화된 제어문에서 앞으로 점프하는 경우에만, 특히 대안이 더 복잡한 코드를 갖는 경우 일반적으로 OK로 간주됩니다.

    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

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

외부 루프를 잠시 루프로 만들고 if 문에서 "Exit While"을 선택합니다.

저는 "exit for"라고 타이핑하는 것을 몇 번 실험했고 그것이 효과가 있다는 것을 알아차렸고 VB는 저에게 소리를 지르지 않았습니다.제 생각에는 선택사항인 것 같은데 그냥 안 좋아 보였어요.

저는 토바이어스가 공유하는 것과 가장 좋은 옵션이 비슷하다고 생각합니다.당신의 코드를 함수에 넣고 당신이 루프를 깨고 싶을 때 그것을 돌려받으면 됩니다.더 깨끗해 보입니다.

For Each item In itemlist
    For Each item1 In itemlist1
        If item1 = item Then
            Return item1
        End If
    Next
Next

루프에 부울 값 검사를 삽입합니다.
이프 마이 브레이크 Then
하위 항목 종료
종료할 경우
MyBreak이 버튼 또는 레이블에 의해 전환되는 위치를 클릭합니다.

for-to 루프를 종료하려면 인덱스를 제한을 초과하여 설정합니다.

  For i = 1 To max
    some code
    if this(i) = 25 Then i = max + 1
    'some more code...
  Next

언급URL : https://stackoverflow.com/questions/5312291/breaking-exit-nested-for-in-vb-net

반응형