Какова ценность использования IDictionary здесь?
IDictionary <строка, строкa> и словарь <строка, строкa>
Ответ 1
Значение использования интерфейса всегда одно и то же: вам не нужно менять код клиента при переключении на другую реализацию бэкэнд.
Считайте, что профилирование вашего кода позже показывает, что реализация хеш-таблицы (используемая в классе Dictionary
) не подходит для вашей задачи и что бинарное дерево поиска будет работать лучше. Если вы кодировали интерфейс, то переключение реализации является простым. Если, однако, вы использовали конкретный класс, вам нужно изменить намного больше кода в гораздо большем количестве мест. = > Это стоит времени и денег.
Ответ 2
IDictionary обеспечивает более слабую связь.
Скажем, у вас есть такой метод:
void DoSomething(IDictionary<string, string> d)
{
//...
}
Вы можете использовать его следующим образом:
Dictionary<string, string> a = new Dictionary<string, string>();
SortedDictionary<string, string> b = new SortedDictionary<string, string>();
DoSomething(a);
DoSomething(b);
Ответ 3
В соответствии с вашим предыдущим вопросом Класс наследует общий dictionary<string, IFoo>
и интерфейс и обсуждение в ответах, я предполагаю, что вы больше задаете вопрос о наследовании, а не используете.
Реализация из словаря прекрасна, если вы довольны тем, как работает словарь. Если вы хотите что-то изменить, лучше реализовать IDictionary.
IMHO, если вы собираетесь охватить существующего участника "новым", тогда лучше реализовать интерфейс, а не наследовать от исходного класса.