Sobes.tech
Junior

¿Cómo obtener el valor por clave en un diccionario en C#?

sobes.tech AI

Respuesta de la IA

Se puede usar el indexador con clave o el método TryGetValue.

  1. Indexador ([clave]):

    • Devuelve el valor por la clave especificada.
    • Lanza KeyNotFoundException si la clave no existe.
    // Ejemplo de uso del indexador
    Dictionary<string, int> edades = new Dictionary<string, int>();
    edades["Alice"] = 30;
    
    int edadAlice = edades["Alice"]; // Obtenemos el valor
    
    // edades["Bob"]; // Lanzará KeyNotFoundException si no existe la clave "Bob"
    
  2. Método TryGetValue(clave, out valor):

    • Intenta encontrar el valor por la clave especificada.
    • Retorna true si la clave se encuentra y asigna el valor a la variable valor.
    • Retorna false si la clave no se encuentra, y valor tendrá el valor por defecto para el tipo.
    • Es más seguro al trabajar con claves potencialmente ausentes.
    // Ejemplo de uso de TryGetValue
    Dictionary<string, int> edades = new Dictionary<string, int>();
    edades["Alice"] = 30;
    
    int edadAlice;
    if (edades.TryGetValue("Alice", out edadAlice))
    {
        // La clave "Alice" fue encontrada, edadAlice contiene 30
        // ... usar edadAlice
    }
    
    int edadBob;
    if (edades.TryGetValue("Bob", out edadBob))
    {
        // Este bloque no se ejecutará, ya que no existe la clave "Bob"
    }
    else
    {
        // La clave "Bob" no fue encontrada, edadBob será 0 (valor por defecto para int)
    }
    

También se puede usar el método GetValueOrDefault(clave) (en .NET Core 2.1+ y .NET Standard 2.1+), que devuelve el valor por la clave o el valor por defecto si no se encuentra.

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

int edadAlice = edades.GetValueOrDefault("Alice"); // 30
int edadBob = edades.GetValueOrDefault("Bob");     // 0 (valor por defecto)