вложенные коллекции - PullRequest
       19

вложенные коллекции

0 голосов
/ 12 февраля 2019

Рассмотрим следующий код:

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 голосов
/ 12 февраля 2019

Все работает нормально, до тех пор, пока не будет выполнено col1.Item(2).Add col3.

Кроме того, col1.Item(2) равно col3 согласно этой инструкции:

col1.Add col3

Путем добавления col3к col1.Item(2), вы добавляете указатель к col3 к ... col3, поэтому он «продолжает расширяться» - 4-й элемент 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)

Я бы не рекомендовал использовать такую ​​рекурсивную структуру данных (т.е. добавлять коллекцию к себе).

...