Junior — Middle
Dlaczego ważne jest nadpisanie metody GetHashCode w klasach?
sobes.tech AI
Odpowiedź od AI
Nadpisanie metody GetHashCode jest ważne dla poprawnego działania obiektów w kolekcjach opartych na haszowaniu, takich jak Dictionary, HashSet i innych.
Powody:
GetHashCodezwraca wartość numeryczną, która jest używana do szybkiego wyszukiwania obiektu w tablicach haszujących.- Jeśli dwa obiekty są uważane za równe (według metody
Equals), powinny zwracać ten sam kod hash, aby kolekcje mogły je poprawnie obsługiwać. - Jeśli nie nadpiszesz
GetHashCoderazem zEquals, obiekty mogą być niepoprawnie porównywane lub duplikowane w kolekcjach.
Przykład:
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);
}
}
W ten sposób nadpisanie GetHashCode zapewnia spójność z Equals i poprawne działanie obiektów w strukturach hash.