Есть ли польза для 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]
Существуют ли сценарии, в которых один из этих методов превосходит другой? Будут ли у них похожие показатели производительности? Или вместо этого следует сосредоточиться на том, какой метод обеспечивает самый чистый и простой в обслуживании код?
Мысли?