Junior — Middle
Jaké kroky je třeba podniknout, aby bylo možné použít vlastní třídu jako klíč v kolekci typu slovník?
sobes.tech AI
Odpověď od AI
Chcete-li použít vlastní třídu jako klíč v slovníku (Dictionary<TKey, TValue>) v C#, je třeba zajistit správné porovnání klíčů a výpočet jejich hash kódů. K tomu je nutné:
- Přepsat metodu
Equals(object obj), aby správně porovnávala objekty vaší třídy podle významných polí. - Přepsat metodu
GetHashCode(), aby objekty považované za stejné měly stejný hash kód.
Pří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);
}
}
Alternativně lze implementovat rozhraní IEqualityComparer<T> a předat jej do konstruktoru slovníku, pokud nechcete měnit samotnou třídu.