Когда Вы использовали бы Список <KeyValuePair <T1, T2>> вместо Словаря <T1, T2>?

Для пользователей и групп, вопрос существующих ранее пользователей должен быть определен относительно потребностей приложения, а не непредвиденных обстоятельств программирования. Возможно, Ваше приложение требует администратора; тогда предварительно заполните. Или возможно не - тогда добавляют код для корректного выяснения пользовательскую установку во время запуска приложения.

По более общему вопросу, ясно, что много Приложений для направляющих могут извлечь выгоду из предзаполненной даты. Например, американский адрес, содержащий приложение, может также содержать все Штаты и их сокращения. Для этих случаев миграции являются Вашим другом, я верю.

83
задан Corpsekicker 20 November 2009 в 08:33
поделиться

6 ответов

Когда вам не нужен быстрый поиск по ключу - поддержание хэш-таблицы, используемой Словарь , имеет определенные накладные расходы.

72
ответ дан 24 November 2019 в 08:49
поделиться

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

59
ответ дан 24 November 2019 в 08:49
поделиться

Из http://blogs.msdn.com/bclteam/archive/2004/09/03/225473.aspx :

KeyValuePair vs. DictionaryEntry
[Кшиштоф Квалина]

Мы обсуждали проблему с реализация IEnumerable на Словарь . Какой тип должен IEnumerable.GetEnumerator (). Current возвращение? KeyValuePair или DictionaryEntry ? То же самое для ICollection.CopyTo . Примеры того, что типа надо скопировать в массив?

Мы решили следующее: IEnumerable и интерфейс ICollection реализации будут использовать KeyValuePair как тип элемента. IDictionary конкретные члены ( GetEnumerator возвращается IDictionaryEnumerator ) будет использовать DictionaryEntry как тип элемента.

Причина в том, что мы находимся в процессе внесения изменений, где IEnumerator расширит IEnumerator . Было бы очень странно если идти по иерархии от Словарь -> IEnumerable -> IEnumerable мы внезапно изменили тип элемент, возвращаемый перечислителями.

3
ответ дан 24 November 2019 в 08:49
поделиться

Список также может быть полезен, если вам важен порядок элементов.

14
ответ дан 24 November 2019 в 08:49
поделиться

В веб-сервисах SOAP для Silverlight мы обнаружили, что не сериализовать. Это может быть ситуация, когда вы использовали бы список KeyValuePair вместо словаря.

.

5
ответ дан 24 November 2019 в 08:49
поделиться

В дополнение к ответу Филиппа Нгана, SOAP или иным образом, вы не можете сериализовать XML-объекты, реализующие IDictionary.

Q: Почему я не могу сериализовать хэш-таблицы?

A: XmlSerializer не может классы процессов, реализующие интерфейс IDictionary. Частично это произошло из-за ограничений расписания, а частично из-за того, что хеш-таблица не имеет аналога в системе типов XSD. Единственное решение - реализовать пользовательскую хэш-таблицу, которая не реализует интерфейс IDictionary.

отсюда

7
ответ дан 24 November 2019 в 08:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: