1
resposta

[Projeto] Manipulando dicionários

    Dictionary<string, string> tarefas = new Dictionary<string, string>()  
    {  
        { "Refatorar módulo de login", "Ana" },  
        { "Testar API de pagamentos", "Pedro" }  
    };  

    tarefas.Clear();

    tarefas.Add("Implementar autenticação OAuth", "João");  
    tarefas.Add("Otimizar consultas SQL", "Maria");  
    tarefas.Add("Atualizar documentação", "Carlos");

    Console.WriteLine("Tarefas do próximo sprint:");
    foreach (var tarefa in tarefas)
    {
        Console.WriteLine($"- {tarefa.Key}: {tarefa.Value}");
    }
1 resposta

Olá, Eduardo. Como vai?

Seu código está excelente e demonstra perfeitamente como funciona o ciclo de vida de um dicionário (Dictionary<TKey, TValue>) em C#. Você realizou corretamente a inicialização, a limpeza completa da coleção com o método Clear(), a inserção de novas chaves e valores com Add() e a iteração usando o laço foreach.

Para complementar o seu projeto e agregar ainda mais valor ao seu aprendizado sobre coleções, existem duas boas práticas essenciais quando trabalhamos com dicionários em ambientes de produção:


1. Cuidados ao utilizar o método Add()

O método tarefas.Add("Chave", "Valor") é ótimo, mas ele tem um comportamento crítico: se você tentar adicionar uma chave que já existe no dicionário, o C# vai lançar uma exceção do tipo ArgumentException e interromper a execução do programa.

Para evitar que seu código quebre caso haja chaves duplicadas, existem duas abordagens recomendadas:

  • Abordagem Segura (ContainsKey): Verificar se a chave já existe antes de adicionar.
  • Abordagem Direta (Indexador []): Usar colchetes. Se a chave não existir, ela é criada; se já existir, o valor é atualizado (sobrescrevendo o anterior) sem gerar erros.

Veja o exemplo prático dessas alternativas:

// Forma segura prevenindo erros:
if (!tarefas.ContainsKey("Otimizar consultas SQL"))
{
    tarefas.Add("Otimizar consultas SQL", "Maria");
}

// Forma direta com indexador (sobrescreve se já existir):
tarefas["Otimizar consultas SQL"] = "Lucas"; 

2. Melhorando a legibilidade na iteração

No seu loop foreach, você utilizou a estrutura padrão onde o tipo é inferido. Para deixar bem evidente a estrutura interna do dicionário para outros desenvolvedores que lerem seu código, você pode desestruturar a chave e o valor diretamente no laço (recurso disponível nas versões mais recentes do C#):

Console.WriteLine("Tarefas do próximo sprint:");
foreach (var (atividade, responsavel) in tarefas)
{
    Console.WriteLine($"- {atividade}: {responsavel}");
}

O resultado impresso no console será exatamente o mesmo, mas o código fica ainda mais limpo e expressivo. Parabéns pelo projeto e por praticar a manipulação de coleções!

Espero que possa ter lhe ajudado!