Junior — Middle
Miért írják felül a GetHashCode és az Equals metódusokat egy .NET osztályban?
sobes.tech MI
Válasz az MI-től
A .NET-ben a GetHashCode és Equals metódusokat felülírják az objektumok helyes összehasonlítása és a kollekciókkal, például Szótárak (Dictionary) és Halmazok (HashSet), való helyes működés érdekében.
- Az Equals meghatározza, mikor tekintünk két objektumot egyenlőnek.
- A GetHashCode egy numerikus kódot ad vissza, amit a gyors kereséshez használnak hash táblákban.
Ha csak az Equals-t írja felül, de a GetHashCode-ot nem, az objektumok helytelenül működhetnek hash kollekciókban. Ezek a metódusok általában együtt vannak felülírva, hogy biztosítsák a konzisztenciát: ha az Equals igazat ad két objektumra, akkor a GetHashCode ugyanazt az értéket kell, hogy adja.
Példa:
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);
}
}