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 陳述式。 如果您想要重複陳述式一定次數,則 For...Next 陳述式通常是更好的選擇。
注意
While
關鍵字也會用於 Do...Loop 陳述式、Skip While 子句和 Take While 子句中。
如果 condition
為 True
,則會執行所有 statements
,直到遇到 End While
陳述式為止。 控制權接著會返回 While
陳述式,並再次檢查 condition
。 如果 condition
仍為 True
,則會重複此程序。 如果為 False
,控制權會轉移到接在 End While
陳述式後面的陳述式。
While
陳述式一律會在啟動迴圈之前檢查條件。 迴圈會在條件仍為 True
時繼續執行。 如果當您第一次進入迴圈時 condition
為 False
,則甚至不會執行任何一次迴圈。
condition
通常是兩個值的比較結果,但可以是評估為布林值資料型別值 (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