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 |
任意。 While の後の 1 つ以上のステートメント。condition が True であるたびに実行されます。 |
Continue While |
任意。 While ブロックの次の反復に制御を渡します。 |
Exit While |
任意。 While ブロックから制御を渡します。 |
End While |
必須です。 While ブロックの定義を終了します。 |
Remarks
条件が True
のままである限り、一連のステートメントを無限に繰り返す場合は、While...End While
構造体を使用します。 条件をテストする場所またはテストで求める結果に関してより柔軟性を必要とする場合は、Do...Loop ステートメントを使用することをお勧めします。 設定した回数だけステートメントを繰り返す場合は、通常、For...Next ステートメントの方が適しています。
注意
While
キーワードは、Do...Loop ステートメント、Skip While 句、および Take While 句でも使用します。
condition
が True
である場合、End While
ステートメントが検出されるまで、すべての statements
が実行されます。 その後、制御が While
ステートメントに戻り、condition
が再度チェックされます。 condition
がまだ True
である場合は、プロセスが繰り返されます。 False
である場合は、制御が End While
ステートメントの後のステートメントに渡されます。
While
ステートメントでは、ループを開始する前に常に条件がチェックされます。 ループは、条件が True
のままである間続行されます。 最初にループに入ったときに condition
が False
である場合は、1 回も実行されません。
通常、condition
は 2 つの値の比較の結果になりますが、ブール データ型の値 (True
または False
) に評価される任意の式を使用することもできます。 この式には、Boolean
に変換された別のデータ型 (数値型など) の値を含めることができます。
While
ループを入れ子にするには、別のループ内にループを配置します。 また、さまざまな種類の制御構造を相互に入れ子にすることもできます。 詳細については、「入れ子になった制御構造」を参照してください。
Exit While
Exit While ステートメントでは、While
ループを終了する別の方法を提供できます。 Exit While
では End While
ステートメントの次のステートメントに制御が直ちに渡されます。
Exit While
は一般に、何らかの条件を評価した (If...Then...Else
ストラクチャなどで) 後に使用します。 誤った値や終了要求など、反復処理を続行することが不要になるか、不可能になる状況を検出した場合に、ループを終了させたいことがあります。 Exit While
は、無限ループを引き起こす可能性がある条件をテストする場合に使用できます。無限ループは、膨大な回数または無限に実行する可能性があるループです。 そこで、Exit While
を使用すると、ループから抜け出すことができます。
While
ループ内の任意の場所に、任意の数の Exit While
ステートメントを配置できます。
入れ子になった While
ループ内で使用した場合、Exit While
では最も内側のループから次の上位レベルの入れ子に制御が渡されます。
Continue While
ステートメントでは、ループの次の反復に直ちに制御が渡されます。 詳細については、「Continue ステートメント」を参照してください。
例 1
次の例では、ループ内のステートメントは 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
例 2
次の例では、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
例 3
次の例では、テキスト ファイル内のすべての行を読み取っています。 OpenText メソッドでは、ファイルを開いて、文字を読み取る StreamReader が返されます。 While
条件では、StreamReader
の Peek メソッドによって、ファイルに追加の文字が含まれるかどうかが判断されます。
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
関連項目
.NET