2010-03-30 6 views
8

Eine Sammlung in VB6 verfolgt also einen Schlüssel für jedes Objekt, und Sie können das Objekt mit seinem Schlüssel nachschlagen.Was sind Sammlungen wie in VB6 implementiert?

Heißt das, Sammlungen sind als eine Art Hashtable unter der Haube implementiert? Mir ist klar, dass Sie mehrere Artikel mit demselben Schlüssel in einer Sammlung haben können, daher auch SOME SORT.

Jeder weiß, welche Art von Datenstruktur eine VB6-Sammlung darstellen soll?

+5

Sie können ** nicht ** mehrere Elemente mit demselben Schlüssel in einer VB6-Sammlung haben. – raven

+0

Haben Sie das getestet? Ich werde das morgen testen ... Ich hatte gedacht, dass das Hinzufügen des gleichen Schlüssels kein Problem ist. –

+1

Das Hinzufügen mehrerer Elemente mit NO-Schlüssel ist OK, Schlüssel sind jedoch unabhängig von der Option Compare-Deklaration eindeutig. –

Antwort

7

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.

+0

Also bedeutet das, dass es sowohl eine verkettete Liste als auch eine Hashtabelle gibt, die Seite an Seite existieren und Verweise auf dieselben Objektobjekte enthalten? Und je nachdem, wie Sie es iterieren, verwendet die verschiedenen Datenstrukturen wie benötigt? –

+0

Mark beschreibt die Code-Schnittstelle, über die Sie auf eine Collection zugreifen. Daraus können wir nur ableiten, dass unter der Haube etwas sein muss, was die Funktionalität unterstützt. Wir können spekulieren, dass es eine verknüpfte Liste & Hash-Tabelle verwenden könnte, aber das wissen wir nicht. – MarkJ

+0

@MarkJ: Ich hatte gehofft, dass jemand mich auf eine Ressource hinweisen könnte, die die Spekulationen über die Implementierung aufklären würde. –

Verwandte Themen