3

我正在使用一个类数组;该类非常简单,仅包含一个元素。该类声明如下:

Class Cell
    Public Info As Int16
End Class

数组:

Dim Maze(11, 15) As Cell

我想使用一个简单的 sub 将每个元素的 .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 循环一开始就不起作用,因为我确信这里缺少一些基本原则。

4

1 回答 1

6

For Each循环不起作用的原因是因为在For Each构造中,局部变量(在您的情况下e)不是引用,而是副本;因此你New Cell对你的数组没有任何影响Cell

于 2013-07-19T18:31:37.563 回答