Maison > développement back-end > C++ > Comment implémenter un dictionnaire multi-clés en C# ?

Comment implémenter un dictionnaire multi-clés en C# ?

Barbara Streisand
Libérer: 2025-01-08 19:26:42
original
460 Les gens l'ont consulté

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

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal