Junior — Middle
Aké kroky je potrebné podniknúť na použitie vlastnej triedy ako kľúča v kolekcii typu slovník?
sobes.tech AI
Odpoveď od AI
Ak chcete použiť vlastnú triedu ako kľúč v slovníku (Dictionary<TKey, TValue>) v C#, je potrebné zabezpečiť správne porovnanie kľúčov a výpočet ich hash kódov. Na to je potrebné:
- Prepisovať metódu
Equals(object obj), aby správne porovnávala objekty vašej triedy podľa významných polí. - Prepisovať metódu
GetHashCode(), aby objekty považované za rovnaké mali rovnaký hash kód.
Príklad:
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);
}
}
Alternatívne, môžete implementovať rozhranie IEqualityComparer<T> a odovzdať ho do konštruktora slovníka, ak nechcete meniť samotnú triedu.