方法 : ループの次の反復処理にスキップする

更新 : 2007 年 11 月

Do ループ、For ループ、または While ループの現在の反復処理を完了している場合、Continue ステートメント (Visual Basic) を使用して、次の反復処理にすぐにスキップできます。

次の反復処理へのスキップ

For...Next ループの次の反復処理へスキップするには

  1. 通常の方法で、For...Next ループを記述します。

  2. 現在の反復処理を終了し、次の反復処理をすぐに続行する場所で、Continue For を使用します。

    Public Function findLargestRatio(ByVal high() As Double, _
        ByVal low() As Double) As Double
        Dim ratio As Double
        Dim largestRatio As Double = Double.MinValue
        For counter As Integer = 0 To low.GetUpperBound(0)
            If Math.Abs(low(counter)) < System.Double.Epsilon _
                Then Continue For 
            ratio = high(counter) / low(counter)
            If Double.IsInfinity(ratio) OrElse Double.IsNaN(ratio) _
                Then Continue For 
            If ratio > largestRatio Then largestRatio = ratio
        Next counter
        Return largestRatio
    End Function
    

入れ子になったループ内からのスキップ

互いに入れ子になっている Do ループ、For ループまたは While ループがある場合、次の反復処理が入れ子内のどのレベルにあっても、そこにすぐにスキップできます。しかし、これはループが異なる種類である場合だけです。たとえば、入れ子になった While ループなど、同じ種類のループの入れ子になっている場合は、Continue While によって、最も内側の While ループの次の反復処理にスキップします。

入れ子になった For ループ内から、Do ループの次の反復処理にスキップするには

  1. 通常の方法で、入れ子になったループを記述します。

  2. 内部 For ループの現在の反復処理を終了する場所で Continue Do を使用し、外側の Do ループの次の反復処理にスキップします。

    Public Sub divideElements(ByRef matrix(,) As Double)
        Dim i As Integer = -1
        Do Until i > matrix.GetUpperBound(0)
            i += 1
            For j As Integer = 0 To matrix.GetUpperBound(1)
                If matrix(j, j) = 0 Then Continue Do 
                matrix(i, j) /= matrix(j, j)
            Next j
        Loop 
    End Sub
    

参照

処理手順

方法 : 制御構造から制御を移す

方法 : 複数のステートメントを繰り返し実行する

方法 : コレクションまたは配列で、各要素の複数のステートメントを実行する

方法 : ループのパフォーマンスを改善する

概念

ループ構造

入れ子になった制御構造

参照

While...End While ステートメント (Visual Basic)

Do...Loop ステートメント (Visual Basic)

For...Next ステートメント (Visual Basic)

その他の技術情報

Visual Basic における制御フロー