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:
- Sovrascrivere il metodo
Equals(object obj)in modo che confronti correttamente gli oggetti della tua classe in base ai campi significativi. - 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.