嵌套集合

时间:2019-02-12 03:14:55

标签: vba collections

考虑以下代码:

Sub NestedCollections()
    Dim col1 As Collection
    Dim col2 As Collection
    Dim col3 As Collection

    Set col1 = New Collection
    Set col2 = New Collection
    Set col3 = New Collection

    col2.Add "a"
    col2.Add "b"
    col2.Add "c"

    col3.Add "d"
    col3.Add "e"
    col3.Add "f"

    col1.Add col2
    col1.Add col3

    col1.Item(2).Add col3

    Set col1 = Nothing
    Set col2 = Nothing
    Set col3 = Nothing
End Sub

如果将监视添加到“ col1”,然后展开“ item(2)”,您会注意到“ item(4)”一直在扩展。为什么会这样?

干杯, 马雷克

1 个答案:

答案 0 :(得分:6)

一切正常,直到执行col1.Item(2).Add col3为止。

除此之外,根据此说明,col1.Item(2)col3

col1.Add col3

通过将col3添加到col1.Item(2),您将指向col3的指针指向... col3,这就是为什么它“保持扩展”的原因-第四点col3的项目本身就是col3

col3.Add "d"   'col1.Item(2)(1)
col3.Add "e"   'col1.Item(2)(2)
col3.Add "f"   'col1.Item(2)(3)
col3.Add col3  'col1.Item(2)(4)

我不建议使用这种递归数据结构(即向其自身添加一个集合)。