Comprobar la existencia de una clave de diccionario en C#

Bilal Shahid 12 octubre 2023
  1. Utilice try-catch para comprobar la existencia de una clave de diccionario en C#
  2. Utilice ContainsKey() para comprobar la existencia de una clave de diccionario en C#
  3. Utilice TryGetValue() para comprobar la existencia de una clave de diccionario en C#
Comprobar la existencia de una clave de diccionario en C#

Un Diccionario tiende a mapear claves y valores. Contiene una clave específica a la que se asigna un valor particular. No se permiten claves duplicadas, y ese es el objetivo de un Diccionario.

Hoy veremos cómo podemos verificar si una clave ya existe en un Diccionario o no.

Utilice try-catch para comprobar la existencia de una clave de diccionario en C#

Comencemos primero con la creación de un diccionario llamado students que asigna cada ID de estudiante específico al CGPA:

Dictionary<int, double> students = new Dictionary<int, double>();
students[101] = 3.22;
students[102] = 3.44;
students[103] = 2.98;

Debido a que se supone que los CGPA están en formato doble, hemos definido <TKEY, TVALUE> como <int, double> respectivamente para ID y CGPA.

Digamos que queremos encontrar si existe una entrada para el estudiante 102 en students. Sí, pero necesitamos un código que nos lo diga directamente.

Entonces, para hacer eso, podemos usar una excepción try-catch de la siguiente manera:

try {
  Console.WriteLine(students[102].ToString());
} catch (Exception e) {
  Console.WriteLine("No such key present");
}

Producción :

3.44

Pero si ahora tratamos de hacer lo mismo para el estudiante 104, sucede lo siguiente:

Producción :

No such key present

¿Por qué? Bueno, el método ToString() solo funciona para valores que no son nulos. Debido a que el estudiante 104 es nulo y no tiene ninguna entrada en estudiantes, se produce una excepción.

Y en lugar de lanzar la excepción, tendemos a atraparla y presentar el mensaje No such key present en la consola.

Por lo tanto, es una forma efectiva de verificar si una clave está presente. Pero, ¿podemos hacerlo más simple?

Utilice ContainsKey() para comprobar la existencia de una clave de diccionario en C#

Observa el siguiente código:

if (!students.ContainsKey(104)) {
  Console.WriteLine("No such key present");
}

Esto presentará un error porque tal clave no está presente.

Producción :

No such key present

Utilice TryGetValue() para comprobar la existencia de una clave de diccionario en C#

Si hacemos lo siguiente:

double getval = 0.0;
if (!students.TryGetValue(104, out getval)) {
  Console.WriteLine("No such key present");
}

Esto tiende a devolver la salida de la siguiente manera:

No such key present

El TryGetValue() tiende a obtener un valor para una clave si existe. El valor se obtiene en el segundo parámetro.

Por lo tanto, se envía con la palabra clave out. Y la variable para obtener este valor se declara antes del ámbito, que es getval.

El código completo para todos estos métodos diferentes se ha incluido a continuación:

using System;
using System.Collections.Generic;
using System.Text;

namespace jinlku_console {
  class coder {
    static void Main(String[] args) {
      Dictionary<int, double> students = new Dictionary<int, double>();
      students[101] = 3.22;
      students[102] = 3.44;
      students[103] = 2.98;

      // TRY CATCH BLOCK
      try {
        Console.WriteLine(students[104].ToString());
      } catch (Exception e) {
        Console.WriteLine("No such key present");
      }

      // CONTAINS KEY METHOD
      if (!students.ContainsKey(104)) {
        Console.WriteLine("No such key present");
      }

      // TRYGETVALUE

      double getval = 0.0;
      if (!students.TryGetValue(104, out getval)) {
        Console.WriteLine("No such key present");
      }
    }
  }
}
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Artículo relacionado - Csharp Dictionary