Junior — Middle
De ce se suprascriu metodele GetHashCode și Equals într-o clasă .NET?
sobes.tech AI
Răspuns de la AI
În .NET, metodele GetHashCode și Equals sunt redefinite pentru compararea corectă a obiectelor și funcționarea adecvată cu colecții precum dicționare (Dictionary) și seturi (HashSet).
- Equals determină când două obiecte sunt considerate egale în sens.
- GetHashCode returnează un cod numeric utilizat pentru căutarea rapidă a unui obiect în tabelele hash.
Dacă redefinești doar Equals, dar nu și GetHashCode, obiectele pot funcționa incorect în colecțiile hash. Aceste metode sunt de obicei redefinite împreună pentru a asigura coerența: dacă Equals returnează true pentru două obiecte, și GetHashCode trebuie să returneze aceeași valoare.
Exemplu:
public 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);
}
}