While...End While ステートメント (Visual Basic)
指定された条件が真 (True) である間、一連のステートメントを繰り返し実行します。
While condition
[ statements ]
[ Exit While ]
[ statements ]
End While
指定項目
語句 |
定義 |
condition |
必ず指定します。 Boolean 式を指定します。 condition が Nothing の場合、Visual Basic はこれを False として扱います。 |
statements |
省略可能です。 1 つ以上のステートメントを While の後に指定します。この部分は、condition が True であるたびに実行されます。 |
Exit While |
省略可能です。 制御を While ブロックの外へ移動します。 |
End While |
必ず指定します。 While ブロックの定義を終了します。 |
解説
条件が True の間、一連のステートメントを不特定の回数繰り返すには、While...End While 構造を使用します。 条件をテストする場所またはテスト結果の判定を柔軟に指定する必要がある場合は、Do...Loop ステートメント (Visual Basic) の方が適しています。 ステートメントを特定の回数繰り返す場合は、For...Next ステートメント (Visual Basic) を使用することをお勧めします。
condition が True である場合、End While が現れるまですべての statements が実行されます。 その後、制御は再び While ステートメントに戻り、condition が再び評価されます。 condition が真 (True) の間、この処理が繰り返されます。 False である場合は、制御は End While ステートメントの後のステートメントに渡ります。
注意
While キーワードは、Do...Loop ステートメント (Visual Basic)、Skip While 句 (Visual Basic)、および Take While 句 (Visual Basic) でも使用されます。
規則
条件の指定。 条件は、通常、2 つの値の比較によって判断されますが、ブール型 (Boolean) (Visual Basic) 値 (True または False) として評価できる式の場合どのような式でも指定できます。 指定できる値には、数値型などのその他のデータ型を Boolean に変換した値も含まれます。
条件のテスト。 While ステートメントは、ループを開始する前に必ず条件を確認します。 条件が True である限りループが継続されます。
反復回数。 ループに最初に入った時点で condition が False の場合、ループは一度も実行されません。
ループの入れ子。 While ループは入れ子構造にできます。つまり、ループの中に別のループを入れることができます。 また、種類の異なる制御構造を入れ子にすることもできます。 詳細については、「入れ子になった制御構造 (Visual Basic)」を参照してください。
ループの終了。 Exit ステートメント (Visual Basic) は、End While ステートメントの次のステートメントにすぐに制御を移します。 ループの継続が不要になったり不可能になったりする条件 (エラー値や終了要求など) を検出した場合にループを終了できます。 Exit While ステートメントは、While ループの任意の場所に何度でも使用できます。 Exit While は、If...Then...Else 構造の中などで、なんらかの条件を評価した後によく使用されます。
無限ループ。 Exit While は、無限ループを引き起こす可能性がある条件をテストする場合などに使用されます。無限ループは、実行回数が極端に多くなる (または無限に繰り返される) ループです。 このような条件を検出した場合は、Exit While を使ってループを終了できます。 詳細については、「Do...Loop ステートメント (Visual Basic)」を参照してください。
使用例
次のコード例は、While...End While ステートメントを使って、カウンター変数をインクリメントします。 ループ内に記述されたステートメントは、条件の評価が True の間、実行されます。
Dim counter As Integer = 0
While counter < 20
counter += 1
' Insert code to use current value of counter.
End While
MsgBox("While loop ran " & CStr(counter) & " times")
参照
参照
Do...Loop ステートメント (Visual Basic)
For...Next ステートメント (Visual Basic)