Junior — Middle
Prečo je dôležité prepísať metódu GetHashCode v triedach?
sobes.tech AI
Odpoveď od AI
Prepísanie metódy GetHashCode je dôležité pre správne fungovanie objektov v kolekciách založených na hashovaní, ako sú Dictionary, HashSet a ďalšie.
Dôvody:
GetHashCodevracia číselnú hodnotu, ktorá sa používa na rýchle vyhľadávanie objektu v hash tabuľkách.- Ak sú dva objekty považované za rovnaké (podľa metódy
Equals), mali by vracať rovnaký hash kód, aby ich kolekcie správne spracovávali. - Ak
GetHashCodenie je prepísané spolu sEquals, objekty môžu byť nesprávne porovnávané alebo duplikované v kolekciách.
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);
}
}
Týmto spôsobom zabezpečuje prepísanie GetHashCode konzistenciu s Equals a správne fungovanie objektov v hashových štruktúrach.