共用方式為


For...Next 陳述式 (Visual Basic)

更新:2007 年 11 月

按指定次數重複一組陳述式

 For counter [ As datatype ] = start To end [ Step step ]     [ statements ]     [ Exit For ]     [ statements ] Next [ counter ]

參數

  • counter
    在 For 陳述式中為必要項。數值變數。迴圈 (Loop) 的控制項變數。

  • datatype
    如果尚未宣告 counter,則為必要項。counter 的資料型別。

  • start
    必要項。數值運算式。counter 的初始值。

  • end
    必要項。數值運算式。counter 的最終值。

  • step
    選擇項。數值運算式。在迴圈中 counter 每次增加的數量。

  • statements
    選擇項。在 For 和 Next 之間執行指定次數的一或多個陳述式。

  • Exit For
    選擇項。從 For 迴圈當中傳出控制權。

  • Next
    必要項。結束 For 迴圈的定義。

備註

當您要多次重複執行一組陳述式時,請使用 For...Next 結構。

當您事先不知道需要在迴圈中執行多少次陳述式時,很適合使用 While...End While 陳述式 (Visual Basic)Do...Loop 陳述式 (Visual Basic)。不過,若預期會執行特定次數的迴圈,則最好選用 For...Next 迴圈。初次進入迴圈時,判斷反覆運算的次數。

step 值可為正值或負值。它會判斷迴圈處理,如下所示:

Step 值

執行迴圈的條件

正值或零

counter <= end

負值

counter >= end

若未指定時,step 預設值為 1。

規則

  • 資料型別:counter 的資料型別通常為 Integer,但可為任何支援大於或等於 (>=)、小於或等於 (<=)、加法 (+) 和減法 (-) 運算子的型別。甚至可以是使用者定義的型別,用以支援所有的這些運算子。

    start、end 和 step 運算式通常會評估為 Integer 型別,但可以評估擴展至 counter 型別的任何資料型別。如果對 counter 採用使用者定義的型別,這表示您可能必須定義 CType 轉換運算子,將 start、end 或 step 的型別轉換為 counter 型別。

  • 宣告:如果尚未在這個迴圈外宣告 counter,就必須在 For 陳述式中宣告它。在這個情況下,counter 的範圍是迴圈的主體。但不能在迴圈內外宣告 counter。

  • 反覆運算的次數:Visual Basic 在迴圈開始之前,只會評估反覆運算值 start、end 和 step 一次。如果陳述式區塊變更 end 或 step,這些變更並不會影響迴圈的重複值。

  • 巢狀迴圈 您可以將一個迴圈置於另一個迴圈內,以便巢狀化 For 迴圈。不過,每個迴圈必須具備唯一的 counter 變數。以下的語法結構是有效的:

    For i As Integer = 1 To 10
        For j As Integer = 1 To 10
            For k As Integer = 1 To 10
                ' Insert statements to operate with current values of i, j, and k.
            Next k
        Next j
    Next i
    

    您也可以將不同類型的控制結構以巢狀結構互置。如需詳細資訊,請參閱巢狀控制結構

    注意事項:

    如果先發現外部巢狀層次的 Next 陳述式才發現內部層次的 Next,編譯器會發出錯誤的信號。但是,只有當您在每個 Next 陳述式中指定 counter 時,編譯器才會偵測到這個重疊錯誤。

  • 識別控制項變數:您可以在 Next 陳述式中選擇性地指定 counter。這能提高程式的可讀性,尤其是在您具有巢狀 For 迴圈時。所指定的變數必須和相對應之 For 陳述式中出現的變數相同。

  • 從迴圈當中傳出。Exit 陳述式 (Visual Basic) 會立即將控制權傳輸至接在 Next 陳述式之後的陳述式。如果偵測到一個條件 (例如錯誤值或終止要求),而該條件會使迴圈不需要或不可能繼續重複執行,則您可能會想要結束迴圈。此外,如果在 Try...Catch...Finally 中攔截到例外狀況 (Exception),則可以在 Finally 區塊的結尾使用 Exit For。

    您可以將任意數目的 Exit For 陳述式放置在 For 迴圈的任一處。通常會在評估某個條件之後使用 Exit For,例如在 If...Then...Else 結構中。

  • 無止盡迴圈Exit For 的一個用處是,可以測試會造成「無止盡迴圈」(Endless Loop) 的條件,無止盡的迴圈就是會執行極多次或甚至無限次數的迴圈。如果您偵測到這類狀況,可以使用 Exit For 逸出此迴圈。如需詳細資訊,請參閱 Do...Loop 陳述式 (Visual Basic)

行為

  • 進入迴圈:開始執行 For...Next 迴圈時,Visual Basic 只會評估 start、end 和 step 一次。接著指派 start 給 counter。在它執行陳述式區塊之前,會比較 counter 和 end。如果 counter 已超過結束值,則 For 迴圈會終止,且控制項會傳給 Next 陳述式之後的陳述式。否則會執行陳述式區塊。

  • 迴圈的反覆運算:Visual Basic 每次遇到 Next 陳述式時,便會依 step 遞增 counter,並回到 For 陳述式。接著再比較 counter 和 end,然後根據結果再次執行區塊或終止迴圈。這個處理序會一直繼續,直到 counter 超過 end 或遇到 Exit For 陳述式為止。

  • 終止迴圈:在 counter 超過 end 之前,不會終止迴圈。如果 counter 等於 end,則迴圈會繼續執行。如果 step 是正值,則判斷是否執行區塊的比較為 counter <= end,如果 step 是負值則為 counter >= end。

  • 變更反覆運算值:在迴圈內變更 counter 的值,會使程式碼更難閱讀及偵錯。變更 start、end 或 step 的值不會影響初次進入迴圈時判斷的反覆運算值。

範例

下列範例會使用不同的間距值,說明巢狀 For...Next 結構。

Dim words, digit As Integer
Dim thisString As String = ""
For words = 10 To 1 Step -1
    For digit = 0 To 9
        thisString &= CStr(digit)
    Next digit
    thisString &= " "
Next words

上述範例會建立字串,其中包含數字 0 到 9 的 10 個執行個體,每個字串之間以單一空格隔開。外部迴圈在每次執行迴圈之後,便會遞減迴圈計數器變數。

請參閱

工作

HOW TO:改善迴圈的效能

概念

迴圈結構

巢狀控制結構

參考

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

Do...Loop 陳述式 (Visual Basic)

Exit 陳述式 (Visual Basic)

For Each...Next 陳述式 (Visual Basic)