Soweit ich weiß, ist die VBA-Sammlung als eine verkettete Liste (von Integer-Indizes und For Each ... Next) und eine Hash-Tabelle (von Schlüsseln verwendet) implementiert. Und wie Raven sagte, können Sie nicht mehrere Gegenstände mit demselben Schlüssel haben.
Edited:
@MarkJ: ich gegeben habe, sollte meine zitieren für diese: Hardcore Visual Basic 2nd Ed. von Bruce McKinney, veröffentlicht von Microsoft Press 1997 ISBN 1-57231-422-2
Zitate:
Seite 191 - The Collection Klasse
„Um es einfach auszudrücken, ist die Collection-Klasse ein souped- up C++ - Version der CList-Klasse [...] Wenn Sie CList als doppelt verkettete Liste erweitern und ein paar weitere Funktionen hinzufügen (und vielleicht eine Hash-Tabelle verwenden, um nach Schlüsselfolgen zu suchen), werden Sie das tun eine Auflistungsklasse haben, die der von Visual Basic ähnelt. "
Seite 197 - Leistungs
„Und, wie in der Tat, ich habe von Visual Basic-Entwickler gesagt, dass Sammlungen sind doppelt Listen verknüpft (mit zusätzlichen Features Indizierung unterstützen).“
Jetzt war McKinney mehr ein Journalist als ein Programmierer und kein Entwickler. Er arbeitete jedoch für Microsoft und hat Kontakte in den VB- und VBA-Teams. Seine Erklärung funktioniert für mich.
Der Grund für die doppelt verkettete Liste ist übrigens, dass es effizient ist, Elemente am Anfang und am Ende der Sammlung einzufügen.
Sie können ** nicht ** mehrere Elemente mit demselben Schlüssel in einer VB6-Sammlung haben. – raven
Haben Sie das getestet? Ich werde das morgen testen ... Ich hatte gedacht, dass das Hinzufügen des gleichen Schlüssels kein Problem ist. –
Das Hinzufügen mehrerer Elemente mit NO-Schlüssel ist OK, Schlüssel sind jedoch unabhängig von der Option Compare-Deklaration eindeutig. –