Одним із можливих застосувань Lookupможе бути зворотний зв'язок Dictionary.
Припустимо, у вас телефонна книга реалізована як Dictionaryбукет із (унікальними) іменами як ключі, кожне ім’я пов'язане з номером телефону. Але двоє людей з різними іменами можуть мати один і той же номер телефону. Це не проблема дляDictionary , що не важливо, щоб дві клавіші відповідали одному і тому ж значенню.
Тепер ви хочете шукати, кому належить даний номер телефону. Ви будуєте Lookup, додаючи все KeyValuePairsвід свого Dictionary, але назад, зі значенням як ключем, а ключ як значенням. Тепер ви можете запитувати номер телефону та отримати список імен усіх людей, чий номер телефону є. Створення даних Dictionaryз тими самими даними може знижувати дані (або виходити з ладу, залежно від того, як ви це зробили)
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
означає, що другий запис перезаписує перший - Doc більше не в списку.
Намагання записати ті самі дані трохи по-іншому:
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
викине виняток на другий рядок, оскільки ви не можете Addввести ключ, який вже є Dictionary.
[Звичайно, ви можете використовувати деякі інші структури даних одного , щоб зробити пошуки в обох напрямках, і т.д. Цей приклад означає , що ви повинні регенерувати Lookupз Dictionaryкожної пори останньої зміни. Але для деяких даних це може бути правильним рішенням.]