2011-01-07 4 views
8

Ich wollte nur fragen, was drei verschiedene Wörterbücher benötigt - OrderedDictionary, ListDictionary und HybridDictionary, wenn alle ähnliche Funktionen ausführen. Keiner von ihnen ist sortiert, Elemente der Sammlung können durch Schlüssel in allen von ihnen abgerufen werden. Also, was ist der Zweck von drei verschiedenen Klassen?Notwendigkeit von OrderedDictionary, ListDictionary und HybridDictionary

Danke

Antwort

11

Auf den Punkt gebracht:

  • Dictionary - Nun, ein Wörterbuch.

  • ListDictionary - Für kleine Sammlungen, in der Regel weniger als 10 Stück

  • HybridDictionary - Wird verwendet, wenn die Sammelgröße unbekannt ist (Schalter Implementierungen in Abhängigkeit von der Größe der Sammlung)

  • OrderedDictionary - Der Elemente eines OrderedDictionary werden im Gegensatz zu den Elementen einer Klasse SortedDictionary<TKey, TValue> nicht nach dem Schlüssel sortiert. Sie können auf Elemente entweder über den Schlüssel oder über den Index zugreifen.

+2

Es ist ein guter Artikel ... aber was ist der Bedarf von OrderedDictionary dann immer noch betrifft mich?? – Batrickparry

+1

@Novice - Sorry, verpasste das - Hinzufügen von mehr Informationen jetzt. –

+0

Meine Vermutung ist, dass die Schlüssel geordnet sind. –

6

zu Kyles Antwort zu ergänzen:

OrderedDictionary ermöglicht den Abruf durch Schlüssel und Index (es eine Hash-Tabelle verwendet und und Array-intern), hat aber einen größeren Aufwand pro Artikel

Listdictionary hat eine verkettete Liste als seine interne Struktur, es funktioniert nicht gut für Einfügen und Abrufen von Schlüssel, aber behält die ursprüngliche Reihenfolge der Einfügung

HybridDictionary ist ein ListDictionary, wenn das Wörterbuch enthält nicht viele Elemente und konvertiert zu einem Hashta ble, wenn die Anzahl der Artikel ein spezifisches Limit erreicht (ich persönlich denke, Sie sollten das Dictionary < verwenden,> anstelle von C# 2)

+0

Nicht zu vergessen, der Hauptunterschied zwischen 'ListDictionary' und' OrderedDictionary', ehemaliger nicht Ordnung, während letzteres tut. 'ListDictionary'-Benennung ist wenig verwirrend (und wird meiner Meinung nach nicht benötigt, wenn Sie eine Hybrid-Version haben). – nawfal

Verwandte Themen