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 個執行個體,每個字串之間以單一空格隔開。外部迴圈在每次執行迴圈之後,便會遞減迴圈計數器變數。