分享方式:


While...End While 陳述式 (Visual Basic)

在所指定條件為 True 的情況下,執行一系列的陳述式。

語法

While condition
    [ statements ]
    [ Continue While ]
    [ statements ]
    [ Exit While ]
    [ statements ]
End While

組件

詞彙 定義
condition 必要。 Boolean運算式。 如果 conditionNothing,則 Visual Basic 會將其視為 False
statements 選擇性。 接在 While 後面的一或多個陳述式,會在每次 conditionTrue 時執行。
Continue While 選擇性。 將控制權轉移到 While 區塊的下一次反覆運算。
Exit While 選擇性。 將控制權轉移出 While 區塊。
End While 必要。 終止 While 區塊的定義。

備註

當您想要無限次重複一組陳述式時 (只要條件仍為 True),請使用 While...End While 結構。 如果您想要在測試條件位置或測試結果方面有更大的彈性,建議使用 Do...Loop 陳述式。 如果您想要重複陳述式一定次數,則 For...Next 陳述式通常是更好的選擇。

注意

While 關鍵字也會用於 Do...Loop 陳述式Skip While 子句Take While 子句中。

如果 conditionTrue,則會執行所有 statements,直到遇到 End While 陳述式為止。 控制權接著會返回 While 陳述式,並再次檢查 condition。 如果 condition 仍為 True,則會重複此程序。 如果為 False,控制權會轉移到接在 End While 陳述式後面的陳述式。

While 陳述式一律會在啟動迴圈之前檢查條件。 迴圈會在條件仍為 True 時繼續執行。 如果當您第一次進入迴圈時 conditionFalse,則甚至不會執行任何一次迴圈。

condition 通常是兩個值的比較結果,但可以是評估為布林值資料型別值 (TrueFalse) 的任何運算式。 此運算式可以包含另一個已轉換成 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 WhileExit 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 條件中,StreamReaderPeek 方法會判斷檔案是否包含其他字元。

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

另請參閱