#c# #dictionary
#c# #словарь
Вопрос:
Для Dictionary<,>
«Порядок, в котором возвращаются элементы, не определен».
Я знаю, что есть SortedDictionary
, но если мне просто нужен словарь, который возвращает мне элементы в том порядке, в котором я их разместил, что лучше всего сделать?
Я думаю, что мне следует использовать List<KeyValuePair<,>>
и преобразовывать это в словарь, когда мне нужно выполнить поиск (в отличие от выполнения предварительного поиска по словарю).
Или я упускаю что-то более умное?
Ответ №1:
Существует не универсальный класс, который делает это: OrderedDictionary но в настоящее время нет универсальной версии.
Комментарии:
1. Спасибо, это то, о чем я не знал.
2. Это не совсем словарь, сохраняющий порядок. Вы могли бы вставлять элементы в эту коллекцию, указав index в методе Insert, изменив таким образом ее значение. Я бы выбрал здесь пользовательское решение, поскольку оно может быть гарантированно правильным.
Ответ №2:
Создайте свою собственную коллекцию с помощью резервного словаря и списка, которые вы поддерживаете в синхронизации. Всякий раз, когда элементы добавляются / удаляются, вы добавляете / удаляете их в список и словарь (то же самое с Clear()). Обязательно проверьте наличие дубликатов ключей перед добавлением элементов в список
Это позволило бы вам реализовать другую пользовательскую логику, такую как сортировка, уведомления об изменениях и т. Д