Словарь с точно такими же ключами и значениями - PullRequest
4 голосов
/ 22 мая 2010

Мне нужно что-то вроде словаря или SortedList, но я продолжаю получать исключения, когда он получает две одинаковые вещи ... Есть ли другой способ обойти это?

Спасибо

Ответы [ 5 ]

4 голосов
/ 22 мая 2010

Я предполагаю, что вы используете

dictionary.Add(key, value);

Если вы счастливы, просто заменив существующую пару ключ / значение, тогда просто используйте индексатор:

dictionary[key] = value;

Если вы хотите иметь несколько значений для одного и того же ключа, см. Другие ответы:)

4 голосов
/ 22 мая 2010

Вы, вероятно, хотите мультикарту . Вы можете смоделировать один с Dictionary<Key, List<Value>>. Также см. этот вопрос , он имеет несколько реализаций мультикарты.

0 голосов
/ 23 мая 2010

Если вы запрашиваете словарь, значение которого совпадает с ключом, то в пространстве имен System.Collections.Generic есть общий тип коллекции с именем 'HashSet', который выглядит так, как будто он служит для этой цели.

Если вы просто спрашиваете об исключении, сгенерированном при добавлении в ваш словарь, я думаю, что Джон Скит, вероятно, прав в том, в чем, вероятно, ваша проблема.

HashSet:

http://msdn.microsoft.com/en-us/library/bb359438.aspx

0 голосов
/ 22 мая 2010

И словарь, и отсортированный список имеют ключи, то есть ключи должны быть уникальными.

Вы можете проверить, прежде чем добавить товар, например, dic.ContainsKey(key) или list.Contains(item) перед добавлением.

Если вы хотите добавить несколько значений для одной клавиши, вы можете использовать NameValueCollection.

0 голосов
/ 22 мая 2010

Ключ в словаре или отсортированный список, ключ должен быть уникальным: это цель хеш-таблиц. Вместо этого вы можете использовать List<KeyValuePair<TKey, TValue>> или KeyValuePair<TKey, TValue>[], но, конечно, вы не сможете найти значение по ключу, поскольку у вас могут быть дубликаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...