更新: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- 可以读取集合的元素,但是不能对集合本身做任何修改,例如添加、删除或替换任何元素。但是,如果元素是引用类型,则可以访问并设置其成员。由于每个 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- 求和计算可以正常完成,因为它只需要读取各个元素。但是,将元素重置为零的操作无法完成,因为只有每个元素的本地副本被重置为零,而原始数组中的原始元素却保留未变。