Vitor Ricardo

Dictionary dentro de Dictionary

A princípio, este título parece ser confuso, né? Dictionary dentro de Dictionary, mas não se assuste, bora esclarecer isso! Como visto no artigo, um dictionary é formado por chave/valor, tanto a chave quanto o valor podem ser de qualquer tipo, logo, podemos usar um outro dictionary como um valor de uma chave. Bora ver isso na prática!

Para exemplificar, vamos criar um dictionary que servirá para traduzir algumas frases, para isso, crie um projeto e no arquivo Program.cs, adicione os seguintes dictionaries:

Dictionary<string, string> portugues = new Dictionary<string, string>()
{
    {  "texto1" , "É hora de morfar!" },
    {  "texto2" , "Um é tudo e tudo é um." },
    {  "texto3" , "É mais de 8 mil!" }
};

Dictionary<string, string> ingles = new Dictionary<string, string>()
{
    {  "texto1" , "It's time to morph!" },
    {  "texto2" , "One is everything and everything is one." },
    {  "texto3" , "It is more than 8 thousand!" }
};

Dictionary<string, string> espanhol = new Dictionary<string, string>()
{
    {  "texto1" , "¡Es hora de transformarse!" },
    {  "texto2" , "Uno es todo y todo es uno." },
    {  "texto3" , "¡Son más de 8 mil!" }
};

Em cima temos 3 línguas com 3 frases, repare que as chaves são os mesmo para os 3 dictionary, isso é essencial para que funcione corretamente.

Vamos adicionar agora o dictionary principal, que receberá os 3 de uma vez.

Dictionary<string, Dictionary<string, string>> linguas = new Dictionary<string, Dictionary<string, string>>()
{
    {  "portugues", portugues },
    {  "ingles", ingles },
    {  "espanhol", espanhol },
};

Beleza, nosso tradutor esta configurado, agora é só fazer uso dele:

Console.WriteLine($"{linguas["portugues"]["texto1"]}");
Console.WriteLine($"{linguas["portugues"]["texto2"]}");
Console.WriteLine($"{linguas["portugues"]["texto3"]}");
Console.WriteLine("------------------------------");
Console.WriteLine($"{linguas["ingles"]["texto1"]}");
Console.WriteLine($"{linguas["ingles"]["texto2"]}");
Console.WriteLine($"{linguas["ingles"]["texto3"]}");
Console.WriteLine("------------------------------");
Console.WriteLine($"{linguas["espanhol"]["texto1"]}");
Console.WriteLine($"{linguas["espanhol"]["texto2"]}");
Console.WriteLine($"{linguas["espanhol"]["texto3"]}");

//Outputs:
//É hora de morfar!
//Um é tudo e tudo é um.
//É mais de 8 mil!
//------------------------------
//It's time to morph!
//One is everything and everything is one.
//It is more than 8 thousand!
//------------------------------
//¡Es hora de transformarse!
//Uno es todo y todo es uno.
//¡Son más de 8 mil!

Dica:
Pratique criando um Dictionary que recebe ENUM como chave e classes como valor.

Conclusão

Ao usar um dictionary com outro dictionary, nos permite armazenar dados de forma muito mais dinâmicas.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *