特定の条件が 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 ブロックの定義を終了します。 |
注釈
条件がTrue
残っている限り、一連のステートメントを不定回数繰り返す場合は、While...End While
構造体を使用します。 条件をテストする場所やテストする結果の柔軟性を高める場合は、 Do...Loop ステートメント。 ステートメントを一定回数繰り返す場合は、 For...通常、次のステートメント の方が適しています。
注
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
ステートメントに続くステートメントに制御を直ちに転送します。
通常、何らかの条件が評価された後 (たとえば、If...Then...Else
構造体) にExit While
を使用します。 誤った値や終了要求など、反復を続ける必要がなくなったり不可能になる条件を検出した場合は、ループを終了できます。 無限ループを引き起こす可能性のある条件をテストする場合は、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