Junior — Middle
Kodėl svarbu perrašyti metodą GetHashCode klasėse?
sobes.tech AI
Atsakymas iš AI
Perrašymas GetHashCode metodo yra svarbus teisingam objektų veikimui pagal maišą pagrįstose kolekcijose, tokiuose kaip Dictionary, HashSet ir kituose.
Priežastys:
GetHashCodegrąžina skaitinę reikšmę, kuri naudojama greitam objekto paieškai maišų lentelėse.- Jei du objektai laikomi lygiais (pagal
Equalsmetodą), jie turi grąžinti tą patį maišo kodą, kad kolekcijos juos tinkamai apdorotų. - Jei
GetHashCodenėra perrašytas kartu suEquals, objektai gali būti neteisingai lyginami arba dubliuojami kolekcijose.
Pavyzdys:
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);
}
}
Šiuo būdu GetHashCode perrašymas užtikrina suderinamumą su Equals ir teisingą objektų darbą maišų struktūrose.