Как работать с коллекциями

Коллекция, по сути, представляет собой массив элементов. В отличие от массива, элементы в одной коллекции могут быть разных типов, т.е. числа, строки, объекты. Кроме того она предоставляет дополнительные возможности работы с элементами. Чтобы начать работу с коллекцией, нужно ее объявить:

Dim Collect As New Collection
Изначально, объявленная коллекция не содержит элементов. Аналогично, если бы мы работали с массивом, мы могли бы записать:
Dim Mas()
Теперь в коллекцию Collect можно добавить элемент:
Collect.Add 10
Таким образом мы добавили в коллекцию элемент, содержащий число 10. Автоматически число элементов в коллекции увеличилось на единицу. При работе с массивом, данная запись выглядела бы так:
Redim Preserve Mas(0)
Mas(0) = 10
В отличии от массива, индекс первого элемента в коллекции соответствует единице. Чтобы узнать содержание первого элемента, можно написать:
a = Collect.Item(1)
Для нашего случая получим число 10.
При добавлении элемента можно задать ему имя, по которому к нему можно будет обратиться. Например:
Collect.Add 20, "Count2"
Таким образом обратиться к этому элементу можно двумя способами:
a = Collect.Item(2)
или
a = Collect.Item("Count2")
Одно из достоинств работы с коллекциями является возможность добавлять элементы не только в конец коллекции, но вставлять их между существующими элементами. Например, следующая запись добавляет новый элемент до первого элемента:
Collect.Add 30, , 1
Здесь 1 - номер элемента, до которого нужно добавить новый элемент.
Далее добавим новый элемент после второго элемента:
Collect.Add 15, , , 2
Чтобы удалить элемент, используйте Remove:
Collect.Remove 1
После удаления все элементы смещаются т.е. в данном случае первым элементом следует элемент, который был по счету вторым.
Число элементов в коллекции возвращает свойство Count. Пройтись по всем элементам коллекции можно двумя способами:
For i = 1 To Collect.Count
MsgBox Collect.Item(i)
Next
или
For Each Element In Collect
MsgBox Element
Next
В VB коллекции чаще всего встречаются при работе с объектами. Например для форм существует коллекция Controls, в которой перечислены все контролы, находящиеся на форме; при работе с базами данных существуют коллекции таблиц в базе данных и коллекции полей в таблицах.
Hosted by uCoz