Vérifier l'existence d'une clé de dictionnaire en C#

Bilal Shahid 12 octobre 2023
  1. Utilisez try-catch pour vérifier l’existence d’une clé de dictionnaire en C#
  2. Utilisez ContainsKey() pour vérifier l’existence d’une clé de dictionnaire en C#
  3. Utilisez TryGetValue() pour vérifier l’existence d’une clé de dictionnaire en C#
Vérifier l'existence d'une clé de dictionnaire en C#

Un Dictionnaire a tendance à mapper des clés et des valeurs. Il contient une clé spécifique à laquelle une valeur particulière est mappée. Les clés en double ne sont pas autorisées, et c’est tout l’objectif d’un Dictionnaire.

Aujourd’hui, nous allons voir comment vérifier si une clé existe déjà dans un Dictionnaire ou non.

Utilisez try-catch pour vérifier l’existence d’une clé de dictionnaire en C#

Commençons d’abord par créer un dictionnaire appelé étudiants qui associe chaque identifiant d’étudiant spécifique à l’ACMG :

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

Comme les CGPA sont censés être au format double, nous avons défini le <TKEY, TVALUE> comme <int, double> respectivement pour les ID et les CGPA.

Disons que nous voulons trouver s’il existe une entrée pour l’étudiant 102 dans students. C’est le cas, mais nous avons besoin d’un code pour nous le dire directement.

Donc, pour ce faire, nous pouvons utiliser une exception try-catch comme suit :

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

PRODUCTION:

3.44

Mais si nous essayons maintenant de faire la même chose pour l’élève 104, il se passe ce qui suit :

PRODUCTION:

No such key present

Pourquoi? Eh bien, la méthode ToString() ne fonctionne que pour les valeurs qui ne sont pas nulles. Étant donné que l’étudiant 104 est nul et n’a pas d’entrée dans students, une exception se produit.

Et plutôt que de lancer l’exception, on a tendance à l’attraper et à présenter le message No such key present dans la console.

C’est donc un moyen efficace de vérifier si une clé est présente. Mais peut-on faire plus simple ?

Utilisez ContainsKey() pour vérifier l’existence d’une clé de dictionnaire en C#

Observez le code suivant :

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

Cela présentera une erreur car aucune clé de ce type n’est présente.

PRODUCTION:

No such key present

Utilisez TryGetValue() pour vérifier l’existence d’une clé de dictionnaire en C#

Si nous faisons ce qui suit :

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

Cela a tendance à renvoyer la sortie comme suit :

No such key present

Le TryGetValue() tend à obtenir une valeur pour une clé si elle existe. La valeur est obtenue dans le deuxième paramètre.

Il est donc envoyé avec le mot clé out. Et la variable pour obtenir cette valeur est déclarée avant la portée, qui est getval.

Le code complet pour toutes ces différentes méthodes a été inclus ci-dessous :

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");
      }
    }
  }
}
Auteur: Bilal Shahid
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

Article connexe - Csharp Dictionary