veröffentlicht am: 24.05.2020 zuletzt aktualisiert am: 07.02.2023
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.
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"} };
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
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
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
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.
"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
Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.
100% kostenlos registrieren · keine Zahlungsdaten notwendig