我正在使用一个类数组;该类非常简单,只包含一个元素。该类声明如下:
Class Cell
Public Info As Int16
End Class
数组:
Dim Maze(11, 15) As Cell
我想使用一个简单的子句将每个元素的.Info变量设置为15,但我意识到我必须先创建元素。我尝试使用For Each循环如下,但它没有工作,当循环完成时,所有内容仍然设置为空:
For Each e As Cell In Maze
If e Is Nothing Then
e = New Cell
End If
Next
我并不关心正确的解决方案:我使用了常规的For循环,这实现了我想做的一切......
For a = 0 To Maze.GetUpperBound(0)
For b = 0 To Maze.GetUpperBound(1)
Maze(a, b) = New Cell
Maze(a, b).Info = Maze(a, b).Info Or 15
Next
Next
...但我想知道为什么For Each循环首先不起作用,因为我确信我在这里缺少一些基本原则。
答案 0 :(得分:5)
For Each
循环不起作用的原因是因为在For Each
构造中,局部变量(在您的情况下为e
)不是引用,而是副本;因此,New Cell
对Cell
的数组没有任何影响。