Sobes.tech
Junior

Como obter o valor por chave num dicionário em C#?

sobes.tech IA

Resposta da IA

Pode usar o indexador com uma chave ou o método TryGetValue.

  1. Indexador ([chave]):

    • Retorna o valor para a chave especificada.
    • Lança uma KeyNotFoundException se a chave não existir.
    // Exemplo de uso do indexador
    Dictionary<string, int> idades = new Dictionary<string, int>();
    idades["Alice"] = 30;
    
    int idadeAlice = idades["Alice"]; // Obtém o valor
    
    // idades["Bob"]; // Lançará KeyNotFoundException se a chave "Bob" não existir
    
  2. Método TryGetValue(chave, out valor):

    • Tenta encontrar o valor para a chave especificada.
    • Retorna true se a chave for encontrada e atribui o valor à variável valor.
    • Retorna false se a chave não for encontrada, e valor terá o valor padrão para o tipo.
    • É mais seguro ao trabalhar com chaves potencialmente ausentes.
    // Exemplo de uso do TryGetValue
    Dictionary<string, int> idades = new Dictionary<string, int>();
    idades["Alice"] = 30;
    
    int idadeAlice;
    if (idades.TryGetValue("Alice", out idadeAlice))
    {
        // A chave "Alice" foi encontrada, idadeAlice contém 30
        // ... usar idadeAlice
    }
    
    int idadeBob;
    if (idades.TryGetValue("Bob", out idadeBob))
    {
        // Este bloco não será executado, pois a chave "Bob" não existe
    }
    else
    {
        // A chave "Bob" não foi encontrada, idadeBob será 0 (valor padrão para int)
    }
    

Também é possível usar o método GetValueOrDefault(chave) (no .NET Core 2.1+ e .NET Standard 2.1+), que retorna o valor para a chave ou o valor padrão se a chave não for encontrada.

// Exemplo de uso de GetValueOrDefault
Dictionary<string, int> idades = new Dictionary<string, int>();
idades["Alice"] = 30;

int idadeAlice = idades.GetValueOrDefault("Alice"); // 30
int idadeBob = idades.GetValueOrDefault("Bob");     // 0 (valor padrão)