Junior — Middle
De ce este important să suprascriem metoda GetHashCode în clase?
sobes.tech AI
Răspuns de la AI
Suprascrierea metodei GetHashCode este importantă pentru funcționarea corectă a obiectelor în colecțiile bazate pe hash, cum ar fi Dictionary, HashSet și altele.
Motivări:
GetHashCodereturnează o valoare numerică utilizată pentru căutarea rapidă a unui obiect în tabelele hash.- Dacă două obiecte sunt considerate egale (conform metodei
Equals), trebuie să returneze același cod hash pentru ca colecțiile să le gestioneze corect. - Dacă nu se suprascrie
GetHashCodeîmpreună cuEquals, obiectele pot fi comparate incorect sau pot fi duplicate în colecții.
Exemplu:
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);
}
}
Astfel, suprascrierea GetHashCode asigură coerența cu Equals și funcționarea corectă a obiectelor în structurile hash.