Sobes.tech
Junior — Middle

Comment peut-on éviter la limite de taille ou la restriction lors de l'utilisation d'une clé dans un dictionnaire?

sobes.tech IA

Réponse de l'IA

En C#, les dictionnaires (Dictionary<TKey, TValue>) ont des restrictions sur les types de clés et leur taille, par exemple, la clé doit être hachée et avoir des méthodes GetHashCode et Equals correctement implémentées.

Pour éviter ces restrictions de taille ou de type de clé, vous pouvez:

  • Utiliser des clés composées, par exemple, créer une classe ou une structure combinant plusieurs valeurs et implémenter pour elle des méthodes GetHashCode et Equals correctes.
  • Convertir des clés grandes ou complexes en représentations plus compactes, par exemple, sérialiser l'objet en une chaîne ou utiliser une fonction de hachage.
  • Utiliser des collections ou structures de données spécialisées si le dictionnaire standard ne convient pas.

Exemple de clé composée:

struct CompositeKey
{
    public int Id;
    public string Name;

    public override bool Equals(object obj) => obj is CompositeKey other && Id == other.Id && Name == other.Name;
    public override int GetHashCode() => HashCode.Combine(Id, Name);
}

var dict = new Dictionary<CompositeKey, string>();
dict[new CompositeKey { Id = 1, Name = "Test" }] = "Value";