Gibt es einen Vorteil für Tupel-basierte oder verschachtelte Wörterbücher?

Ich habe nach einer Möglichkeit gesucht, Werte für mehr als den einzelnen Schlüssel zu speichern und abzurufen, den die generische Dictionary-Klasse von C # bereitstellt.

Suchen im Internet (und auf SO selbst) hat mir ein paar Möglichkeiten aufgezeigt:

Tupelbasierte Wörterbücher

.NET 4.0 erleichtert die Unterstützung einer generischen Tuple <,> -Klasse. Dies bedeutet, dass Sie aus jedem beliebigen Tupel ein Wörterbuch erstellen können, d. H.

var myDict = new Dictionary<Tuple<Char, Int>, MyClass>();

Verschachtelte Wörterbücher

Ich habe erfahren, dass Sie Wörterbücher auch in Wörterbücher verschachteln können, wodurch der Zugriff auf das gespeicherte Ergebnis dem Zugriff auf ein N-dimensionales Array ähnelt. Zum Beispiel:

Dictionary<int, Dictionary<int, Dictionary<Char, MyClass>>>

auf die dann zugegriffen werden könnte:MyClass foo = MyData[8][3]['W'];

Begrenzte verkettete Schlüsselwörterbücher

Aber während beidesArbeit Gut für komplexe Daten und benutzerdefinierte Klassen, ich frage mich, ob sie immer notwendig sind. Zumindest bei primitiven Daten scheint die Verkettung der Schlüssel mit einem Begrenzer genauso effektiv zu sein.

//keys are char + int
Dictionary<string, MyClass> myDict = New Dictionary<string, Myclass>();
String input = myChar + "|" + myInt
MyClass foo = myDict[input]

Gibt es Szenarien, die eine dieser Methoden der anderen überlegen machen? Werden sie ähnliche Aufführungszeiten haben? Oder sollte der Fokus stattdessen auf der Methode liegen, die den saubersten, am einfachsten zu wartenden Code bietet?

Gedanken?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage