Исключение «элемент с тем же ключом»; словарь с ключами enum - PullRequest
3 голосов
/ 21 февраля 2012

У меня есть Dictionary<TKey,TValue>, в который я вставляю много данных. Ключи являются перечислением. Я продолжаю получать это исключение:

Элемент с таким же ключом уже добавлен.

Но я не не вижу каких-либо обманщиков, хотя подозреваю, что некоторые из моих перечислений имеют одинаковое значение Это вызвало бы ошибку дублированного ключа? Я думал, что enum - это особый тип, поэтому его значение не имеет значения.

Исключение не очень полезно ... оно не говорит мне, какая клавиша отключает обман. Я использую список инициализатора.


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

Ответы [ 2 ]

5 голосов
/ 21 февраля 2012

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

1 голос
/ 21 февраля 2012

По умолчанию числовое представление приращения Enums, поэтому, если вы не указываете повторяющиеся значения, их не должно быть.

Попробуйте выполнить приведенную ниже замену на T с вашим enum и посмотрите, не конфликтует ли какое-либо из значений.

return Enum.GetValues(typeof(T));

Если нет, то единственная альтернатива, которую я вижу, это то, что вы используете enum в качестве ключа дважды.

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