Junior — Middle
Ce pași trebuie urmați pentru a utiliza o clasă proprie ca cheie într-o colecție de tip dicționar?
sobes.tech AI
Răspuns de la AI
Pentru a utiliza o clasă personalizată ca cheie într-un dicționar (Dictionary<TKey, TValue>) în C#, trebuie să asigurați o comparație corectă a cheilor și calculul codurilor lor hash. Pentru aceasta, trebuie:
- Să suprascrieți metoda
Equals(object obj)astfel încât să compare corect obiectele clasei dvs. pe baza câmpurilor semnificative. - Să suprascrieți metoda
GetHashCode()astfel încât obiectele considerate egale să aibă același cod hash.
Exemplu:
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);
}
}
Alternativ, puteți implementa interfața IEqualityComparer<T> și să o transmiteți constructorului dicționarului dacă nu doriți să modificați clasa în sine.