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!