Dictionnaire multi-clés en C#
C# lui-même ne prend pas en charge la structure de données du dictionnaire multi-clés. Cependant, certaines bibliothèques open source proposent cette fonctionnalité.
Implémentation basée sur un tuple
Une approche courante consiste à utiliser des tuples comme clés. Un tuple est une structure de données qui représente une collection de plusieurs valeurs, chacune avec son propre type. Par exemple, le code suivant définit un tuple contenant deux clés (une chaîne et un entier) :
<code class="language-csharp">var tuple = (key1: "key1", key2: 1);</code>
Vous pouvez ensuite utiliser le tuple comme clé du dictionnaire :
<code class="language-csharp">var dictionary = new Dictionary<Tuple<string, int>, string>(); dictionary.Add(tuple, "value");</code>
Implémentation basée sur la structure
Une autre option consiste à définir une structure personnalisée pour représenter la valeur multi-clé. Le code suivant définit une structure à deux champs :
<code class="language-csharp">public struct Key { public string Key1 { get; set; } public int Key2 { get; set; } }</code>
Vous pouvez ensuite utiliser la structure comme clé d'un dictionnaire :
<code class="language-csharp">var dictionary = new Dictionary<Key, string>(); dictionary.Add(new Key { Key1 = "key1", Key2 = 1 }, "value");</code>
Implémentation d'objet de valeur
Une approche plus sophistiquée consiste à définir une classe pour encapsuler plusieurs valeurs et appliquer la sémantique des valeurs. Cette approche fournit un moyen concis et facile à gérer pour gérer les données multi-clés. Le code suivant définit un objet valeur avec deux champs :
<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>
Vous pouvez ensuite utiliser l'objet valeur comme clé du dictionnaire :
<code class="language-csharp">var dictionary = new Dictionary<ValueObject, string>(); dictionary.Add(new ValueObject("key1", 1), "value");</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!