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
残念ながら、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
ループをサブルーチンに入れて、return
を呼び出します
「exit for」と何度か入力してみましたが、機能することに気づき、VBは怒鳴りませんでした。それは私が推測するオプションですが、それはただ悪く見えました。
最良の選択肢は、トバイアスが共有しているものに似ていると思います。関数にコードを入れて、ループから抜け出したいときにコードを返すだけです。きれいに見えます。
For Each item In itemlist
For Each item1 In itemlist1
If item1 = item Then
Return item1
End If
Next
Next
外側のループをwhileループにし、ifステートメントで「Whit Exit」を実行します。
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`
ポッパ。