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 後面的一或多個陳述式,每次 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,則會執行所有 statements,直到遇到 End While 陳述式為止。 控制項就會返回到 While 陳述式,然後, condition 再被檢查。 如果 condition 仍為 True,則會重複這項處理。 如果是 False,控制項會將 End While 至接在陳述式之後的陳述式。
,在開始迴圈前, While 陳述式永遠檢查這個條件。 只要條件維持為 True,迴圈就會繼續。 如果 condition 是 False ,初次進入迴圈時,它也不會執行一次。
condition 通常來自於兩個值的比較,不過,可以是任何評估為 Boolean 資料型別 (Visual Basic) 值的任何運算式(True 或 False)。 這個運算式可以包含其他資料型別的值,例如數字型別(Numeric Type),已轉換成 Boolean。
您可以將一個迴圈置於另一個迴圈內,以便巢狀化 While 迴圈。 您可以將不同類型的控制結構以巢狀結構互置。 如需詳細資訊,請參閱 巢狀控制結構 (Visual Basic)。
結束時,
結束時, 陳述式可能會提供另一種 While 結束迴圈。 直接Exit WhileEnd 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 情況, 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