考虑以下代码:
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)”一直在扩展。为什么会这样?
干杯, 马雷克
答案 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)
我不建议使用这种递归数据结构(即向其自身添加一个集合)。