Есть ли польза для Tuple или Nested Dictionaries?

Я искал способ хранить и извлекать значения для более чем одного ключа, который предоставляет универсальный класс Dictionary C #.

Поиск по сети (и на самом ТАК) показал мне пару вариантов:

Tuple Based Dictionaries

.NET 4.0 упрощает поддержку универсального кортежа & lt;, & gt; учебный класс. Это означает, что вы можете сделать словарь из любого произвольного кортежа, т.е.

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

Nested Dictionaries

Я узнал, что вы также можете вкладывать словари в словари, что делает доступ к сохраненному результату аналогичным доступу к N-мерному массиву. Например:

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

который затем может быть оценен:MyClass foo = MyData[8][3]['W'];

Delimited Concatenated Key Dictionaries

Но пока обаwork Интересно, всегда ли они необходимы для сложных данных и пользовательских классов? По крайней мере, для примитивных данных может показаться, что объединение ключей с разделителем столь же эффективно.

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

Существуют ли сценарии, в которых один из этих методов превосходит другой? Будут ли у них похожие показатели производительности? Или вместо этого следует сосредоточиться на том, какой метод обеспечивает самый чистый и простой в обслуживании код?

Мысли?

Ответы на вопрос(4)

Ваш ответ на вопрос