Prüfen auf das Vorhandensein eines Dictionary-Schlüssels in C#

Bilal Shahid 12 Oktober 2023
  1. Verwenden Sie try-catch, um die Existenz eines Dictionaryschlüssels in C# zu prüfen
  2. Verwenden Sie ContainsKey(), um die Existenz eines Dictionaryschlüssels in C# zu prüfen
  3. Verwenden Sie TryGetValue(), um die Existenz eines Dictionaryschlüssels in C# zu prüfen
Prüfen auf das Vorhandensein eines Dictionary-Schlüssels in C#

Ein Dictionary tendiert dazu, Schlüssel und Werte abzubilden. Es enthält einen bestimmten Schlüssel, dem ein bestimmter Wert zugeordnet ist. Doppelte Schlüssel sind nicht erlaubt, und das ist das ganze Ziel eines Dictionary.

Heute schauen wir uns an, wie wir prüfen können, ob ein Schlüssel bereits in einem Dictionary existiert oder nicht.

Verwenden Sie try-catch, um die Existenz eines Dictionaryschlüssels in C# zu prüfen

Beginnen wir zunächst mit der Erstellung eines Dictionarys namens Studenten, das jede spezifische Studenten-ID dem CGPA zuordnet:

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

Da die CGPAs im Double-Format vorliegen sollen, haben wir für IDs und CGPAs jeweils <TKEY, TVALUE> als <int, double> definiert.

Nehmen wir an, wir wollen herausfinden, ob es einen Eintrag für den Studenten 102 in students gibt. Das tut es, aber wir brauchen einen Code, um uns das klar zu sagen.

Dazu können wir eine try-catch-Ausnahme wie folgt verwenden:

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

AUSGANG:

3.44

Aber wenn wir jetzt versuchen, dasselbe für den Schüler 104 zu tun, passiert Folgendes:

AUSGANG:

No such key present

Wieso den? Nun, die Methode ToString() funktioniert nur für Werte, die nicht null sind. Da Student 104 null ist und keinen Eintrag in students hat, tritt eine Ausnahme auf.

Und anstatt die Ausnahme auszulösen, neigen wir dazu, sie abzufangen und die Meldung “Kein solcher Schlüssel vorhanden” in der Konsole anzuzeigen.

Es ist also eine effektive Methode, um zu überprüfen, ob ein Schlüssel vorhanden ist. Aber können wir es einfacher machen?

Verwenden Sie ContainsKey(), um die Existenz eines Dictionaryschlüssels in C# zu prüfen

Beachten Sie den folgenden Code:

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

Dies wird einen Fehler darstellen, da kein solcher Schlüssel vorhanden ist.

AUSGANG:

No such key present

Verwenden Sie TryGetValue(), um die Existenz eines Dictionaryschlüssels in C# zu prüfen

Wenn wir Folgendes tun:

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

Dies neigt dazu, die Ausgabe wie folgt zurückzugeben:

No such key present

Der TryGetValue() tendiert dazu, einen Wert für einen Schlüssel zu erhalten, falls er existiert. Der Wert wird im zweiten Parameter erhalten.

Daher wird es mit dem Schlüsselwort out gesendet. Und die Variable, um diesen Wert zu erhalten, wird vor dem Gültigkeitsbereich deklariert, der getval ist.

Der vollständige Code für all diese verschiedenen Methoden ist unten enthalten:

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

Verwandter Artikel - Csharp Dictionary