HOW TO:在集合或陣列中執行各元素的多個陳述式
更新:2007 年 11 月
For Each 陳述式語法結構與 For...Next 迴圈結構形式相似,但它會對集合中的每個項目執行陳述式區塊,而不是執行指定次數。For Each...Next 迴圈使用「項目變數」來表示每次重複迴圈時的不同集合項目。
對集合重複執行的陳述式區塊
若要執行集合中每個項目的陳述式群組
識別要執行陳述式區塊的集合,並使用 For Each...Next 陳述式 (Visual Basic) 來指定項目變數和集合。
For Each thisControl As System.Windows.Forms.Control In thisForm.Controls
如果項目變數非在迴圈外宣告,您可以使用 As 子句,將其宣告為 For Each 陳述式的一部分。
Visual Basic 會在每次反覆查看時,自動替代不同的集合項目。
在最後要重複執行的陳述式之後接上 Next 陳述式,來完成 For Each...Next 的語法結構。您可以在 Next 陳述式中指定項目變數。
Sub lightBlueBackground(ByVal thisForm As System.Windows.Forms.Form) For Each thisControl As System.Windows.Forms.Control In thisForm.Controls thisControl.BackColor = System.Drawing.Color.LightBlue Next thisControl End Sub
也可以讀取集合中的項目,但不能對集合本身進行任何變更,例如新增、刪除或取代任何項目。然而,如果項目為參考型別 (Reference Type),則可以存取並設定其成員。因為每個 Control 項目都是參考型別,所以前述範例中的程式碼可以變更其 BackColor 屬性。
對陣列重複執行的陳述式區塊
您也可以使用 For Each...Next 迴圈逐一查看陣列。不過,與集合一樣,只能讀取陣列元素,但無法予以變更。
若要針對陣列中的每個元素執行陳述式群組
請使用 For Each 陳述式來指定元素變數和陣列。請勿在陣列名稱後加上括弧。
Visual Basic 處理陣列的方式和集合一樣。
在陳述式區塊後接上 Next 陳述式。您可以在 Next 陳述式中指定項目變數。
下列程序是用來計算陣列中元素的總和,並將每個元素重設為零。
Function sumAndReset(ByRef numbers() As Integer) As Integer Dim sum As Integer = 0 For Each elt As Integer In numbers sum += elt ' The following statement works only on the local copy ' of the array, not on the original array. elt = 0 Next elt Return sum End Function
總和會依指示作業,因為它只依賴讀取項目。然而,系統不會依指示重設為零,因為只有每個元素的本機複本會重設為零,而原始陣列中的原始元素仍保持不變。