web-dev-qa-db-ja.com

vb.netのネスト/ブレークの中断/終了

Vb.netのネストされたforまたはloopから抜け出すにはどうすればよいですか?

私は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
115
KoolKabin

残念ながら、exit two levels of forステートメントはありませんが、必要なことを行うための回避策がいくつかあります。

  • 後藤。一般的に、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
    
188
Heinzi

ループをサブルーチンに入れて、returnを呼び出します

16

「exit for」と何度か入力してみましたが、機能することに気づき、VBは怒鳴りませんでした。それは私が推測するオプションですが、それはただ悪く見えました。

最良の選択肢は、トバイアスが共有しているものに似ていると思います。関数にコードを入れて、ループから抜け出したいときにコードを返すだけです。きれいに見えます。

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

外側のループをwhileループにし、ifステートメントで「Whit Exit」を実行します。

3
Andrew Thomas
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
2
Hitesh Paliwal

For-toループを終了する場合、制限を超えてインデックスを設定するだけです。

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

ポッパ。

0
Poppa Mintin