Таким образом, набор в VB6 отслеживает ключ для каждого объекта, и можно искать объект его ключом.
Это означает, что наборы реализованы как своего рода хеш-таблица под капотом? Я понимаю, что у Вас может быть несколько объектов с тем же ключом в наборе, следовательно НЕКОТОРЫЙ ВИД.
Кто-либо знает, какую структуру данных типа набор VB6, как предполагается, представляет?
Насколько мне известно, Коллекция VBA реализована в виде связанного списка (используется целочисленными индексами и For Each ... Next) и хеш-таблицы (используется ключами). И, как сказала Рэйвен, у вас не может быть нескольких предметов с одним и тем же ключом.
Отредактировано:
@MarkJ: Я должен был процитировать это: Hardcore Visual Basic 2nd Ed. Брюс МакКинни, опубликовано Microsoft Press 1997 ISBN 1-57231-422-2
Цитаты:
Страница 191 - Класс Collection
«Проще говоря, класс Collection - это усовершенствованная версия C ++. класса CList [...]. Фактически, если вы улучшите CList до двусвязного списка и дадите ему несколько дополнительных функций (и, возможно, используете хеш-таблицу для поиска строковых ключей), у вас будет коллекция класс очень похож на тот, который предоставляется в Visual Basic.«
Страница 197 - Производительность
« И, собственно говоря, разработчики Visual Basic сказали мне, что Коллекции - это двусвязные списки (с дополнительными функциями для поддержки индексации) ».
Итак, МакКинни был больше журналистом, чем программистом, а не разработчиком. Однако он действительно работал в Microsoft и имел контакты в командах VB и VBA. Его объяснение работает на меня.
Между прочим, причина двусвязности list позволяет эффективно вставлять элементы как в начало, так и в конец коллекции.