Для пользователей и групп, вопрос существующих ранее пользователей должен быть определен относительно потребностей приложения, а не непредвиденных обстоятельств программирования. Возможно, Ваше приложение требует администратора; тогда предварительно заполните. Или возможно не - тогда добавляют код для корректного выяснения пользовательскую установку во время запуска приложения.
По более общему вопросу, ясно, что много Приложений для направляющих могут извлечь выгоду из предзаполненной даты. Например, американский адрес, содержащий приложение, может также содержать все Штаты и их сокращения. Для этих случаев миграции являются Вашим другом, я верю.
Когда вам не нужен быстрый поиск по ключу - поддержание хэш-таблицы, используемой Словарь
, имеет определенные накладные расходы.
Короче говоря, список не определяет уникальность ключа, поэтому, если вам нужна эта семантика, вы должны ее использовать.
Из 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
мы внезапно изменили тип элемент, возвращаемый перечислителями.
Список также может быть полезен, если вам важен порядок элементов.
В веб-сервисах SOAP для Silverlight мы обнаружили, что не сериализовать. Это может быть ситуация, когда вы использовали бы список KeyValuePair вместо словаря.
.
В дополнение к ответу Филиппа Нгана, SOAP или иным образом, вы не можете сериализовать XML-объекты, реализующие IDictionary.
Q: Почему я не могу сериализовать хэш-таблицы?
A: XmlSerializer не может классы процессов, реализующие интерфейс IDictionary. Частично это произошло из-за ограничений расписания, а частично из-за того, что хеш-таблица не имеет аналога в системе типов XSD. Единственное решение - реализовать пользовательскую хэш-таблицу, которая не реализует интерфейс IDictionary.