While...End While ステートメント (Visual Basic)
更新 : 2007 年 11 月
指定された条件が真 (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 ステートメントの後のステートメントに渡ります。
規則
**条件の名前。**条件は、通常、2 つの値の比較によって判断されますが、ブール型 (Boolean) (Visual Basic) 値 (True または False) として評価できる式の場合どのような式でも指定できます。指定できる値には、数値型などのその他のデータ型を Boolean に変換した値も含まれます。
**条件のテスト。**While ステートメントは、ループを開始する前に必ず条件を確認します。条件が True である限りループが継続されます。
**反復回数。**ループに最初に入った時点で condition が False の場合、ループは一度も実行されません。
**ループの入れ子。**While ループは入れ子構造にできます。つまり、While ループの内部に別の While ループを入れることができます。また、種類の異なる制御構造を入れ子にすることもできます。詳細については、「入れ子になった制御構造」を参照してください。
ループの終了。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)