只要指定的條件為 True,就會執行一系列的 語句。
語法
While condition
[ statements ]
[ Continue While ]
[ statements ]
[ Exit While ]
[ statements ]
End While
組件
| 術語 | 定義 |
|---|---|
condition |
必須的。
Boolean 表達式。 如果 condition 是 Nothing,Visual Basic 會將它 False視為 。 |
statements |
選擇性。 後面While一或多個 語句,每次conditionTrue都會執行 。 |
Continue While |
選擇性。 將控制權傳輸至 區塊的 While 下一個反覆專案。 |
Exit While |
選擇性。 將控制權移出 While 區塊。 |
End While |
必須的。 終止 區塊的定義 While 。 |
備註
While...End While當您想要無限期重複一組語句時,請使用 結構,只要條件維持不變即可True。 如果您想要在測試條件的位置或測試條件的結果有更大的彈性,您可能會偏好 使用 Do...迴圈語句。 如果您要重複語句的一組次數, 則 For...下一個語句 通常是較佳的選擇。
備註
關鍵字 While 也會用於 Do...迴圈語句、 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 迴圈。 您也可以將不同類型的控件結構巢狀於彼此內。 如需詳細資訊,請參閱 巢狀控件結構。
結束 While
Exit While 語句可以提供另一種方式來結束While迴圈。
Exit While 立即將控制權傳送至語句之後的 End While 語句。
您通常會在評估某些條件之後使用 Exit While (例如,在結構中 If...Then...Else )。 如果您偵測到不必要或不可能繼續逐一查看的條件,例如錯誤值或終止要求,您可能會想要結束迴圈。 當您測試可能導致無休止循環的條件時,您可以使用 Exit While ,這是一個迴圈,可執行極大甚至無限次數的迴圈。 然後 Exit While ,您可以使用 來逸出迴圈。
您可以在 迴圈中的任何位置放置任意數目 Exit While 的 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 , Peek 的 StreamReader 方法會決定檔案是否包含其他字元。
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