@pavel_arz

Как обратиться к значению словаря по ключу Dictionary в C#?

Как я могу обратиться к словарю типа Dictionary<Dictionary<string, string>, int> по ключу в C#? Мне нужно получить значение intв словаре по ключу Dictionary. Как правильно это сделать?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
@none7
Dictionary строит хеш-таблицу на основе значений возвращённых методом GetHashCode каждого ключа, а так же производит сравнение ключей методом Equals. Класс Dictionary насколько я знаю не переопределяет эти методы, а значит GetHashCode создаётся из указателя. То есть в качестве ключа можно использовать тот самый объект, с которым добавляли новый ключ или если ссылка на него утрачена, то можно его получить через итерацию ключей.
Никогда не используйте такие конструкции! Dictionary предназначен для работы только с неизменяемыми ключами отдающими всегда один и тот же хеш на основе содержимого объекта.
Хотя если этот Ваш Dictionary<Dictionary<string, string>, int> создан с компаратором, который из Dictionary<string, string> вычисляет хеш и проверяет равенство объектов по содержимому, то можно просто создать новый Dictionary<string, string> с нужными ключами и значениями и использовать его в качестве ключа. А если не создан то можно создать новый Dictionary на его основе уже с компаратором.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы