Я искал способ хранить и извлекать значения по более чем одному ключу, который предоставляет общий класс Dictionary C #.
Поиск в Интернете(и на самом SO)показал мне пару вариантов:
Словари на основе кортежей
.NET 4.0 упрощает поддержку универсального класса Tuple. Это означает, что вы можете сделать словарь из любого произвольного кортежа, т. е.
var myDict = new Dictionary, MyClass>();
Вложенные словари
Я узнал, что вы также можете вкладывать словари в словари, что делает доступ к сохраненному результату похожим на доступ к N -размерному массиву. Например:
Dictionary>>
к которому затем мог получить доступ:MyClass foo = MyData[8][3]['W'];
Словари составных ключей с разделителями
Но хотя оба хорошо работают со сложными данными и пользовательскими классами, интересно, всегда ли они необходимы. По крайней мере, для примитивных данных кажется, что объединение ключей с разделителем столь же эффективно.
//keys are char + int
Dictionary myDict = New Dictionary();
String input = myChar + "|" + myInt
MyClass foo = myDict[input]
Существуют ли сценарии, в которых один из этих методов превосходит другой? Будут ли у них одинаковые времена производительности? Или вместо этого следует сосредоточиться на том, какой метод обеспечивает самый чистый и простой в обслуживании код?
Мысли?