Abstraktes Header-Bild in den Farben von tsjdev apps

Blogbeitrag

Extension Methods: Dictionary

Mit der Hilfe von Extension Methods können wir einem vorhandenen Typen zusätzliche Methoden hinzufügen, ohne einen neuen abgeleiteten Typ zu erstellen und ohne den ursprünglichen Typ bearbeiten zu müssen. Bei Extension Methods handelt es sich um statische Methoden. Im Laufe der Zeit ist eine beachtliche Sammlung an Extension Methods entstanden, welche in den verschiedensten Projekten zum Einsatz kamen und auch immer noch kommen. Ich möchte nun in einer kleinen Serie ein paar Methoden vorstellen, welche vielleicht für den einen oder anderen auch von Interesse sein könnten. Den Anfang machen Extension Methods zum Typ Dictionary.

AddOrUpdate

Wie wohl jedem bekannt ist, muss der Key in einem Dictionary eindeutig sein. Daher gibt es die Methode AddOrUpdate, welche zunächst überprüft, ob es einen Eintrag zu dem Key bereits gibt. Ist dies der Fall, so wird der Eintrag aktualisiert und anderenfalls einfach hinzugefügt. Dadurch stellen wir sicher, dass tatsächlich jeder Key nur einmal im Dictionary vorkommt.

public static void AddOrUpdate<TK, TV>(this Dictionary<TK, TV> dictionary,
    TK key, TV value)
{
    if (dictionary.ContainsKey(key))
        dictionary[key] = value;
    else
        dictionary.Add(key, value);
}

GetValueOrDefault

Versucht man, ohne eine vorherige Überprüfung, ob ein Eintrag zu einem gegebenen Key im Dictionary vorhanden ist, einen Eintrag abzurufen, so wird eine Exception geworfen. Um dies zu umgehen, gibt es die Methode GetValueOrDefault, welche entweder den gespeicherten Wert oder einen Default-Wert zurückgibt. So können wir sicherstellen, dass wir immer einen Wert für jeden gegebenen Key erhalten.

public static TV GetValueOrDefault<TK, TV>(this Dictionary<TK, TV> dictionary,
    TK key, TV defaultValue)
{
    return dictionary.ContainsKey(key)
        ? dictionary[key] 
        : defaultValue;
}

Combine

Manchmal hat man zwei Dictionaries, welche man miteinander kombinieren möchte. Dazu gibt es die Methode Combine, welche ein zweites Dictionary dem ersten Dictionary hinzufügt. Dabei wird überprüft, ob ein Eintrag zu einem Key bereits vorhanden ist und nur wenn dies nicht der Fall ist, wird der Eintrag übernommen.

public static void Combine<TK, TV>(this IDictionary<TK, TV> dictionary,
    IDictionary<TK, TV> secondDictionary)
{
    foreach (var item in secondDictionary)
    {
        if (!dictionary.ContainsKey(item.Key))
            dictionary.Add(item.Key, item.Value);
    }
}

ToPrettyString

Gerade während der Entwicklung ist es vom großen Interesse zu wissen, welche Einträge im aktuellen Dictionary vorliegen. Dafür gibt es die Methode ToPrettyString, welche ein gegebenes Dictionary als String ausgeben kann.

public static string ToPrettyString<TK, TV>(this Dictionary<TK, TV> dictionary)
{
    return "{" + string.Join(", ", 
        dictionary.Select((kvp) => $"{kvp.Key}: {kvp.Value}")) + "}";
}

In diesem Beitrag habe ich euch einige Extension Methods vorgestellt, welche in verschiedenen Projekten vor mit zum Einsatz gekommen sind oder immer noch kommen. Habt ihr noch weitere Extension Methods für Dictionaries? Dann teilt die doch mit der Community über die Kommentarfunktion zu diesem Beitrag.

Weiterempfehlen

Diesen Beitrag teilen

Wenn dir der Beitrag gefallen hat: gern weiterreichen. Gute Links dürfen sich ruhig schnell verbreiten.

Vorheriger/Nächster Beitrag

Python unter Windows installieren und einrichten Vorheriger Beitrag Python unter Windows installieren und einrichten Xamarin.Forms: DatePicker mit Placeholder im Material-Design Nächster Beitrag Xamarin.Forms: DatePicker mit Placeholder im Material-Design
Flags Quiz - Ein interaktives Flaggen-Quiz mit HTML, JavaScript und Bulma Flags Quiz - Ein interaktives Flaggen-Quiz mit HTML, JavaScript und Bulma Sicherheitslücken in verwendeten NuGet-Paketen finden Sicherheitslücken in verwendeten NuGet-Paketen finden Windows Terminal unter Windows 11 mit Oh-My-Posh einrichten Windows Terminal unter Windows 11 mit Oh-My-Posh einrichten Cronjobs in Azure Functions: Zeitgesteuerte Aufgaben mit dem TimerTrigger ausführen Cronjobs in Azure Functions: Zeitgesteuerte Aufgaben mit dem TimerTrigger ausführen
Lust auf ein kurzes digitales Hallo? Wenn du eine Idee teilen, eine Frage loswerden oder ein Projekt anschieben willst: mein Posteingang ist deutlich zuverlässiger als Brieftauben. apps@tsjdev-apps.de Mail schicken