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

指定された条件が真 (True) である間、一連のステートメントを繰り返し実行します。

While condition
    [ statements ]
    [ Continue While ]
    [ statements ]
    [ Exit While ]
    [ statements ]
End While

指定項目

語句

定義

condition

必須。Boolean 式を指定します。condition が Nothing の場合、Visual Basic はこれを False として扱います。

statements

省略可能。 1 つ以上のステートメントを While の後に指定します。この部分は、condition が True であるたびに実行されます。

Continue While

省略可能。While ブロックの次の反復処理に制御を移します。

Exit While

省略可能。制御を While ブロックの外へ移動します。

End While

必須。While ブロックの定義を終了します。

解説

条件が True の間、一連のステートメントを不特定の回数繰り返すには、While...End While 構造を使用します。条件をテストする場所またはテスト結果の判定を柔軟に指定する必要がある場合は、Do...Loop ステートメント (Visual Basic) の方が適しています。ステートメントを特定の回数繰り返す場合は、For...Next ステートメント (Visual Basic) を使用することをお勧めします。

[!メモ]

While キーワードは、Do...Loop ステートメント (Visual Basic)Skip While 句 (Visual Basic)、および Take While 句 (Visual Basic) でも使用されます。

condition が True である場合、End While が現れるまですべての statements が実行されます。コントロールは While のステートメントに戻されて、condition は再チェックされます。condition が真 (True) の間、この処理が繰り返されます。これは False場合、コントロールは End While のステートメントの次のステートメントに渡されます。

While のステートメントは、ループを開始する前に必ず条件を確認します。条件が True である限りループが継続されます。ループに最初に入ったとき condition が False 場合、一度も実行されません。

condition は、通常 2 の値の比較に生成されますが、ブール型 (Boolean) (Visual Basic) には、の値を評価する式です (True か False)。この式は異なるデータ型の値が、Booleanに変換された数値型なども指定できます。

While ループは入れ子構造にできます。つまり、ループの中に別のループを入れることができます。また、種類の異なる制御構造を入れ子にすることもできます。詳細については、「入れ子になった制御構造 (Visual Basic)」を参照してください。

が、終了します

が、終了します のステートメントは While のループを終了する別の方法を用意できます。End While のステートメントの次のステートメントにすぐにExit While の制御を移します。

条件を評価した後、通常 Exit While を使用します (たとえば、If...Then...Else の構造体) ループの継続が不要になったり不可能になったりする条件 (エラー値や終了要求など) を検出した場合にループを終了できます。大きい場合、または無限実行回数が多いループになります。無限ループを引き起こす可能性がある条件をテストする場合 Exit While を使用できます。次に、ループを終了するに Exit While を使用できます。

Exit While ステートメントは、While ループの任意の場所に何度でも使用できます。

最も内側のループから入れ子構造の一つ外側のレベルに While の Exit While、入れ子になったループの制御を移します内で使用された場合。

ループの次の反復処理に直ちに Continue While のステートメントの制御を移します。詳細については、「Continue ステートメント (Visual Basic)」を参照してください。

使用例

次の例では、index 変数が 10 を上回るまで、ループ内のステートメントが実行され続けます。

Dim index As Integer = 0
While index <= 10
    Debug.Write(index.ToString & " ")
    index += 1
End While

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

次の例は、Continue While ステートメントと Exit While ステートメントの使用方法を示しています。

Dim index As Integer = 0
While index < 100000
    index += 1

    ' If index is between 5 and 7, continue
    ' with the next iteration.
    If index >= 5 And index <= 8 Then
        Continue While
    End If

    ' Display the index.
    Debug.Write(index.ToString & " ")

    ' If index is 10, exit the loop.
    If index = 10 Then
        Exit While
    End If
End While

Debug.WriteLine("")
' Output: 1 2 3 4 9 10

次の例では、テキスト ファイルのすべての行が読み取られます。OpenText メソッドによりファイルが開かれ、文字を読み取る StreamReader が返されます。While では、StreamReaderPeek のメソッドは、ファイルが追加の文字が含まれているかどうかを判定します。

Private Sub ShowText(ByVal textFilePath As String)
    If System.IO.File.Exists(textFilePath) = False Then
        Debug.WriteLine("File Not Found: " & textFilePath)
    Else
        Dim sr As System.IO.StreamReader = System.IO.File.OpenText(textFilePath)

        While sr.Peek() >= 0
            Debug.WriteLine(sr.ReadLine())
        End While

        sr.Close()
    End If
End Sub

参照

関連項目

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

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

ブール型 (Boolean) (Visual Basic)

Exit ステートメント (Visual Basic)

Continue ステートメント (Visual Basic)

概念

ループ構造 (Visual Basic)

入れ子になった制御構造 (Visual Basic)