Dicionários

O dicionário (Dictionary<TKey, TValue>) é uma coleção genérica em C# que armazena pares de chave e valor, permitindo acesso rápido aos valores por meio de uma chave única. É uma estrutura fundamental para representar dados associados, como nomes e idades, códigos e produtos, entre outros.

Como Declarar e Inicializar um Dicionário

Para usar um dicionário, adicione o namespace:

using System.Collections.Generic;

Exemplo de declaração:

Dictionary<int, string> dict = new Dictionary<int, string>();

Neste exemplo, as chaves são do tipo int e os valores do tipo string. Você pode usar qualquer tipo válido em C# para chaves e valores.

Inicialização com valores:

Dictionary<int, string> frutas = new Dictionary<int, string>()
{
{1, "Banana"},
{2, "Laranja"},
{3, "Manga"},
{4, "Abacate"},
{5, "Maçã"}
};

Pode também inicializar usando o método Add:

frutas.Add(6, "Pera");

Ou usando o indexador:

frutas[7] = "Uva";

Principais Operações

  • Adicionar elementos:
    dicionario.Add(chave, valor);
    ou
    dicionario[chave] = valor;
  • Acessar valores:
    var valor = dicionario[chave];
  • Remover elementos:
    dicionario.Remove(chave);
  • Verificar existência de chave:
    dicionario.ContainsKey(chave);
  • Verificar existência de valor:
    dicionario.ContainsValue(valor);
  • Obter o número de elementos:
    dicionario.Count;

Percorrendo um Dicionário

Pode percorrer todos os pares chave-valor usando foreach:

foreach (KeyValuePair<int, string> item in frutas)
{
Console.WriteLine($"Chave: {item.Key}, Valor: {item.Value}");
}

Ou de forma simplificada:

foreach (var item in frutas)
{
Console.WriteLine($"{item.Key}: {item.Value}");
}

Exemplo Completo

using System;
using System.Collections.Generic;

class Program
{
static void Main()
{
Dictionary<string, int> idades = new Dictionary<string, int>();
idades.Add("Ana", 25);
idades["Bruno"] = 30;

if (idades.ContainsKey("Ana"))
Console.WriteLine($"Idade de Ana: {idades["Ana"]}");

foreach (var par in idades)
Console.WriteLine($"{par.Key}: {par.Value}");

idades.Remove("Ana");
Console.WriteLine($"Total de pessoas: {idades.Count}");
}
}

Dicas e Observações

  • As chaves devem ser únicas; adicionar uma chave já existente gera exceção.
  • O acesso por chave é muito rápido, ideal para buscas e associações.
  • O tipo genérico garante segurança de tipos em tempo de compilação, evitando erros de conversão.