Dicas sobre desenvolvimento de software, gestão e tributações

Rede Social

13 de março de 2018

Dictionary C#


A classe Dictionary representa uma lista de chaves e valores, onde é necessário utilizar uma chave única para identificar um valor qualquer (int, string, classe).
Para manipular esse objeto é como uma lista qualquer, com a diferença que no final das contas é com uma matriz que estamos lidando.

Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("chave1", "valor1");
dict.Add("chave2", "valor2");
dict.Add("chave3", "valor3");

Para retornarmos por exemplo o valor3 em uma string devemos usar:
string teste = dict["chave3"];

Caso for setado um valor a uma chave que não existe ela será criada:
dict["chave4"] = "valorTeste;
A chave4 será adicionada com o "valorTeste".

A chave sempre será única por tanto caso se tente adicionar uma chave já existente uma exceção será gerada.

Uma forma para verificar se a chave existe é utilizando o método ContainsKey como no exemplo:
if (dict.ContainsKey("chave8"))
{
    string value = "";
    dict.TryGetValue("tif", out value);
}
else
    dict.Add("chave8", "valor8");

Para executar um foreach no Dictionary utilizaremos o KeyValuePair
foreach (KeyValuePair<string, string> kvp in dict )
{
    Console.WriteLine("Key = {0}, Value = {1}",
        kvp.Key, kvp.Value);
}

Lembrando que este é um exemplo simples apenas para facilitar o entendimento de quem ainda não conhece o Dictionary, após isso tente utilizar não somente com strings, mas sim com classe
Dictionary<string, MinhaClasse> dict = new Dictionary<string, MinhaClasse>();
Ou até mesmo uma lista de classes
Dictionary<string, List<MinhaClasse>> dict = new Dictionary<string, List<MinhaClasse>>();
que é onde o Dictionary passa a ser ainda mais útil.

Também pode-se utilizar de outras formas para trabalhar jutamente com ele, como por exemplo LINQ
var valores = from item in dict
                      where item.Value == "valor8"
                      select item.Key;

Vale a pena dar uma conferida na documentação oficial.

0 comentários:

Postar um comentário