Sobes.tech
Junior — Middle

Quali passaggi devono essere seguiti per usare una classe personalizzata come chiave in una collezione di tipo dizionario?

sobes.tech AI

Risposta dell'AI

Per utilizzare una classe personalizzata come chiave in un dizionario (Dictionary<TKey, TValue>) in C#, è necessario garantire un confronto corretto delle chiavi e il calcolo dei loro hash code. Per farlo:

  1. Sovrascrivere il metodo Equals(object obj) in modo che confronti correttamente gli oggetti della tua classe in base ai campi significativi.
  2. Sovrascrivere il metodo GetHashCode() affinché gli oggetti considerati uguali abbiano lo stesso hash code.

Esempio:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public override bool Equals(object obj)
    {
        if (obj is Person other)
        {
            return Name == other.Name && Age == other.Age;
        }
        return false;
    }

    public override int GetHashCode()
    {
        return HashCode.Combine(Name, Age);
    }
}

In alternativa, si può implementare l'interfaccia IEqualityComparer<T> e passarla al costruttore del dizionario se non si desidera modificare la classe stessa.