共用方式為


做。。。循環語句 (Visual Basic)

Boolean 條件為 True 或 之前,重複 語句區塊。直到條件變成 True為止。

語法

Do [ { While | Until } condition ]
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop
' -or-
Do
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop [ { While | Until } condition ]

組件

術語 定義
Do 必須的。 啟動循環的定義 Do
While 如果使用 Until ,則無法指定 。 重複迴圈,直到 conditionFalse為止。
Until 如果使用 While ,則無法指定 。 重複迴圈,直到 conditionTrue為止。
condition 選擇性。 Boolean 表達式。 如果 conditionNothing,Visual Basic 會將它 False視為 。
statements 選擇性。 在或 之前 condition 重複的一或多個 語句為 True
Continue Do 選擇性。 將控制權傳送至迴圈的 Do 下一個反覆專案。
Exit Do 選擇性。 將控制權移出 Do 迴圈。
Loop 必須的。 結束 Do 迴圈的定義。

備註

Do...Loop當您想要無限期重複一組語句時,請使用 結構,直到滿足條件為止。 如果您要重複語句的一組次數, 則 For...下一個語句 通常是較佳的選擇。

您可以使用 WhileUntil 指定 ,但不能同時指定 condition兩者。 如果您未提供,迴圈會繼續執行,直到 Exit 傳輸控件離開循環為止。

您只能在循環的開頭或結尾測試 condition 一次。 如果您在迴圈開頭進行測試 condition (在 語句中 Do ),迴圈甚至可能一次執行。 如果您在循環結尾測試 (在 語句中 Loop ),迴圈一律至少會執行一次。

條件通常會產生兩個值的比較,但它可以是評估為 布爾數據類型 值 (TrueFalse) 的任何表達式。 這包括其他數據類型的值,例如已轉換成 Boolean的數值型別。

您可以透過將一個迴圈放入另一個迴圈中來實現巢狀 Do 迴圈。 您也可以將不同類型的控件結構巢狀於彼此內。 如需詳細資訊,請參閱 巢狀控件結構

備註

結構Do...Loop提供比 While... 更多的彈性...End While 語句,因為它可讓您決定在停止True時還是第一次變成 Truecondition結束迴圈。 它也可讓您在迴圈的開頭或結尾進行測試 condition

結束 Do

Exit Do 語句可以提供結束 的Do…Loop替代方式。 Exit Do 會立即將控制權傳送至語句之後的 Loop 語句。

Exit Do 通常會在評估某些條件之後使用,例如在結構中 If...Then...Else 。 如果您偵測到不必要或不可能繼續逐一查看的條件,例如錯誤值或終止要求,您可能會想要結束迴圈。 的 Exit Do 其中一個用法是測試可能導致 無休止循環的條件,也就是可以執行大量甚至無限次數的迴圈。 您可以使用 Exit Do 來逸出迴圈。

您可以在中的任何位置包含任意數目的 Exit DoDo…Loop語句。

在巢狀 Do 迴圈內使用時, Exit Do 會將控制權從最內層的循環轉移至下一個較高的巢狀層級。

範例 1

在下列範例中,迴圈中的語句會繼續執行,直到 index 變數大於 10 為止。 子 Until 句位於迴圈結尾。

Dim index As Integer = 0
Do
    Debug.Write(index.ToString & " ")
    index += 1
Loop Until index > 10

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

範例 2

下列範例會使用 While 子句, Until 而不是 子句,並在 condition 迴圈開頭測試,而不是在結尾測試。

Dim index As Integer = 0
Do While index <= 10
    Debug.Write(index.ToString & " ")
    index += 1
Loop

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

範例 3

在下列範例中,當變數大於 100 時indexcondition停止迴圈。 不過,迴圈 If 中的語句會在索引變數大於 10 時停止 Exit Do 迴圈。

Dim index As Integer = 0
Do While index <= 100
    If index > 10 Then
        Exit Do
    End If

    Debug.Write(index.ToString & " ")
    index += 1
Loop

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

範例 4

下列範例會讀取文字檔中的所有行。 方法 OpenText 會開啟檔案,並傳 StreamReader 回讀取字元的 。 在條件中 Do...LoopPeekStreamReader 方法會判斷是否有任何額外的字元。

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)

        Do While sr.Peek() >= 0
            Debug.WriteLine(sr.ReadLine())
        Loop

        sr.Close()
    End If
End Sub

另請參閱