Um uso de Lookuppoderia ser reverter a Dictionary.
Suponha que você tenha uma lista telefônica implementada como um Dictionarycom vários nomes (exclusivos) como chaves, cada nome associado a um número de telefone. Mas duas pessoas com nomes diferentes podem compartilhar o mesmo número de telefone. Isso não é um problema para a Dictionary, que não se importa que duas chaves correspondam ao mesmo valor.
Agora você deseja descobrir a quem pertence um determinado número de telefone. Você constrói umLookup , adicionando tudo KeyValuePairsdo seu Dictionary, mas para trás, com o valor como chave e a chave como valor. Agora você pode consultar um número de telefone e obter uma lista de nomes de todas as pessoas cujo número de telefone é esse. Criar um Dictionarycom os mesmos dados eliminaria os dados (ou falharia, dependendo de como você o fez), já que fazer isso
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
significa que a segunda entrada substitui a primeira - o Doc não está mais listado.
Tentando escrever os mesmos dados de uma maneira ligeiramente diferente:
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
lançaria uma exceção na segunda linha, pois você não pode Adduma chave que já esteja na Dictionary.
[Obviamente, você pode querer usar alguma outra estrutura de dados única para fazer pesquisas nas duas direções, etc. Este exemplo significa que você precisa regenerar Lookupa Dictionarycada vez que ela mudar. Mas para alguns dados, pode ser a solução certa.]