Das C# Dictionary (mit Codebeispielen)

    Avatarbild von Patrick
    Patrick

    veröffentlicht am: 24.05.2020
    zuletzt aktualisiert am: 07.02.2023

    Die C# Dictionary Datenstruktur

    Als Softwareentwickler arbeiten wir sehr oft mit großen Mengen von Daten, die in verschiedenen Arten von Listen gespeichert sind. In diesem Artikel will ich dir zu diesem Zweck die C# Dictionary Klasse vorstellen, die diesen Prozess vereinfachen kann.

    C# Dictionary erstellen & initialisieren

    Dictionaries sind Auflistungen aus Schlüssel-Wert-Paaren. Die Datentypen von Schlüssel und Wert kannst du bei der Erstellung des Dictionaries angeben.

    Dictionary<int, string> dict = new Dictionary<int, string>();

    Dafür kannst du auch die verkürzte Schreibweise mit var verwenden.

    var dict = new Dictionary<int, string>();

    Du kannst ein Dictionary auch gleich mit Schlüssel-Wert-Paaren erstellen.

    Dictionary<int, string> dict = new Dictionary<int, string> {
        {1, "Eins"},
        {2, "Zwei"}
    };

    Werte zu einem bestehenden Dictionary hinzufügen

    Um einem Dictionary weitere Werte hinzuzufügen, kannst du entweder die Methode Add verwenden oder einen neuen Schlüssel in eckigen Klammern angeben.

    Dictionary<int, string> dict = new Dictionary<int, string>();
    dict.Add(1, "Eins");
    dict[2] = "Zwei";

    Wenn du allerdings versuchst, einen Schlüssel mit Add hinzuzufügen, der bereits existiert, resultiert das in einer ArgumentException.

    try {
        dict.Add(1, "Fünf");
    } catch (ArgumentException) {
        Console.WriteLine("Schlüssel 1 existiert bereits");
    }
    // Schlüssel 1 existiert bereits

    Werte eines Dictionaries entfernen

    Mit Count kannst du die Anzahl an Schlüssel-Wert-Paaren in einem Dictionary abfragen. Remove lässt dich Paare anhand des Schlüssels löschen.

    Console.WriteLine(dict.Count);
    // 2
    dict.Remove(1);
    Console.WriteLine(dict.Count);
    // 1

    Clear gibt dir eine Möglichkeit, ein Dictionary komplett zu leeren.

    dict.Clear();
    Console.WriteLine(dict.Count);
    // 0

    Auf Elemente eines Dictionaries zugreifen

    Um auf einen Wert mit dem Schlüssel zuzugreifen, kannst du diesen in eckigen Klammern angeben.

    Console.WriteLine(dict[1]);
    // Eins

    Mit den Methoden ContainsKey und ContainsValue kannst du überprüfen, ob ein Schlüssel oder Wert in einem Dictionary existiert.

    if (!dict.ContainsKey(5)) {
        Console.WriteLine("Schlüssel 5 existiert nicht");
    }
    //  Schlüssel 5 existiert nicht
    if (dict.ContainsValue("Zwei")) {
        Console.WriteLine("Wert gefunden");
    }
    // Wert gefunden

    Mit foreach kannst du auf jedes einzelne Schlüssel-Wert-Paar eines Dictionaries zugreifen.

    foreach (KeyValuePair<int, string> kvp in dict) {
        Console.WriteLine(kvp);
        Console.WriteLine($"Schlüssel: {kvp.Key}, Wert: {kvp.Value}");
    }
    [1, Eins]
    Schlüssel: 1, Wert: Eins
    [2, Zwei]
    Schlüssel: 2, Wert: Zwei

    Du kannst auch nur auf die Werte beziehungsweise Schlüssel eines Dictionaries zugreifen, wenn es dir beliebt.

    Dictionary<int, string>.ValueCollection val_col = dict.Values;
    foreach (string s in val_col) {
        Console.WriteLine(s);
    }
    // Eins
    // Zwei
    Dictionary<int, string>.KeyCollection key_col = dict.Keys;
    foreach (int s in key_col) {
        Console.WriteLine(s);
    }
    // 1
    // 2

    Zusammenfassung: Das C# Dictionary

    Dictionaries sind äußerst flexibel. Du kannst große Mengen an Daten in ihnen speichern und sie dynamisch nach Belieben erweitern oder verkürzen. Das zugreifen auf einzelne oder alle Schlüssel-Wert-Paare wird uns durch die verschiedenen Möglichkeiten wie foreach auch einfach gemacht.

    Wenn du noch Fragen, Anmerkungen, Kritik oder Lob hast, schreib es bitte in die Kommentare!

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Python, Java & SQL und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."

    - Lennart Sparbier

    100% kostenlos registrieren · keine Kreditkarte notwendig

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig