IDictionaryє інтерфейсом і Dictionaryє класом.
Dictionaryзнаряддя праці IDictionary.
Це означає, що це можливо для посилання на Dictionaryекземпляр за допомогою / за IDictionaryекземпляром і викликати більшість Dictionaryметодів та властивостей через IDictionaryекземпляр.
Дуже рекомендується використовувати якомога більше інтерфейсів, оскільки інтерфейси абстрагують модулі та збірки додатків, дозволяють поліморфізм, який є дуже поширеним і корисним у багатьох ситуаціях та випадках, і дозволяє замінювати один модуль іншим, не торкаючись інших модулів .
Припустимо, що в даний час програміст написав:
IDictionary<string> dictionary = new Dictionary<string>();
А тепер dictionaryвикликає методи та властивості Dictionary<string>.
У майбутньому бази даних збільшилися в розмірах, і ми виявляємо, що Dictionary<string>це занадто повільно, тому ми хочемо замінити Dictionary<string>на RedBlackTree<string>, що швидше.
Отже, все, що потрібно зробити, - це замінити наведену вище інструкцію на:
IDictionary<string> dictionary = new RedBlackTree<string>();
Звичайно, що якщо RedBlackTreeреалізуєIDictionary тоді весь код програми успішно компілюється, і у вас є нова версія програми, де програма тепер працює швидше та ефективніше, ніж попередня версія.
Без інтерфейсів таку заміну було б зробити важче, і програмісти та розробники вимагали б змінити більше коду, який є потенційним для помилок.