Двухмерная таблица с индексацией по строке (объекту) - PullRequest
1 голос
/ 12 ноября 2010

У меня есть проблема, мне нужно создать 2-мерную таблицу, которая будет индексироваться по строке, например:

table["London","Cambridge"] = 120;

или с зубчатыми:

table["London"]["Cambridge"] = 120;

Как объявить коллекциюили массив, который может справиться с этим?Я нашел решение, но не уверен, что оно лучшее.

Dictionary<string, Dictionary<string, int>> test = new Dictionary<string, Dictionary<string, int>>();

Но когда я хочу создать новое значение, мне нужно инициализировать новый словарь, так почему я считаю, что решение не самое правильное:

table.Add("London", new Dictionary<string, int> {{"Cambridge",120}});

Итак, как наилучшим образом создать двумерный массив, проиндексированный строкой (может, создадим новый класс, который сможет это обрабатывать)?

1 Ответ

2 голосов
/ 12 ноября 2010

Я написал MultiKey-словарь один раз, давайте посмотрим, здесь это так.

Вы можете получить или установить элемент двумя ключами, как это dictionary["key1", "key2"].

Edit:
Но я предполагаю, что с типом Tuple в .NET 4 вы можете использовать Tuple в качестве ключа вместо использования вложенных словарей.

public class Dictionary<TKey1, TKey2, TValue> : Dictionary<Tuple<TKey1, TKey2>, TValue>
...
...