Heim >Backend-Entwicklung >C++ >Wie implementiert man ein Mehrschlüsselwörterbuch in C#?

Wie implementiert man ein Mehrschlüsselwörterbuch in C#?

Barbara Streisand
Barbara StreisandOriginal
2025-01-08 19:26:42464Durchsuche

How to Implement a Multi-Key Dictionary in C#?

Mehrschlüsselwörterbuch in C#

C# selbst unterstützt die Datenstruktur eines Mehrschlüsselwörterbuchs nicht. Einige Open-Source-Bibliotheken bieten diese Funktionalität jedoch an.

Tupelbasierte Implementierung

Ein gängiger Ansatz besteht darin, Tupel als Schlüssel zu verwenden. Ein Tupel ist eine Datenstruktur, die eine Sammlung mehrerer Werte darstellt, von denen jeder seinen eigenen Typ hat. Der folgende Code definiert beispielsweise ein Tupel, das zwei Schlüssel (eine Zeichenfolge und eine Ganzzahl) enthält:

<code class="language-csharp">var tuple = (key1: "key1", key2: 1);</code>

Sie können das Tupel dann als Schlüssel des Wörterbuchs verwenden:

<code class="language-csharp">var dictionary = new Dictionary<Tuple<string, int>, string>();
dictionary.Add(tuple, "value");</code>

Strukturbasierte Umsetzung

Eine weitere Option besteht darin, eine benutzerdefinierte Struktur zu definieren, um den Mehrschlüsselwert darzustellen. Der folgende Code definiert eine Struktur mit zwei Feldern:

<code class="language-csharp">public struct Key
{
    public string Key1 { get; set; }
    public int Key2 { get; set; }
}</code>

Sie können die Struktur dann als Schlüssel für ein Wörterbuch verwenden:

<code class="language-csharp">var dictionary = new Dictionary<Key, string>();
dictionary.Add(new Key { Key1 = "key1", Key2 = 1 }, "value");</code>

Wertobjektimplementierung

Ein ausgefeilterer Ansatz besteht darin, eine Klasse zu definieren, um mehrere Werte zu kapseln und die Wertesemantik durchzusetzen. Dieser Ansatz bietet eine übersichtliche und einfach zu wartende Möglichkeit, mit Daten mit mehreren Schlüsseln umzugehen. Der folgende Code definiert ein Wertobjekt mit zwei Feldern:

<code class="language-csharp">public class ValueObject
{
    public string Key1 { get; private set; }
    public int Key2 { get; private set; }

    public ValueObject(string key1, int key2)
    {
        Key1 = key1;
        Key2 = key2;
    }

    public override bool Equals(object obj)
    {
        return obj is ValueObject other &&
               other.Key1 == Key1 &&
               other.Key2 == Key2;
    }

    public override int GetHashCode()
    {
        return HashCode.Combine(Key1, Key2);
    }
}</code>

Sie können dann das Wertobjekt als Schlüssel des Wörterbuchs verwenden:

<code class="language-csharp">var dictionary = new Dictionary<ValueObject, string>();
dictionary.Add(new ValueObject("key1", 1), "value");</code>

Das obige ist der detaillierte Inhalt vonWie implementiert man ein Mehrschlüsselwörterbuch in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn