Sobes.tech
Junior — Middle

Miért fontos felülírni a GetHashCode metódust osztályokban?

sobes.tech MI

Válasz az MI-től

A GetHashCode metódus felülírása fontos az objektumok helyes működéséhez hash-alapú gyűjteményekben, mint például a Dictionary, HashSet és mások.

Okok:

  • A GetHashCode egy numerikus értéket ad vissza, amit az objektum gyors keresésére használnak hash-táblákban.
  • Ha két objektum egyenlőnek számít (a Equals metódus szerint), akkor ugyanazt a hash-kódot kell visszaadniuk, hogy a gyűjtemények helyesen kezeljék őket.
  • Ha nem írjuk felül a GetHashCode-t az Equals-szel együtt, az objektumok helytelenül összehasonlíthatók vagy duplikálódhatnak a gyűjteményekben.

Példa:

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);
    }
}

Így a GetHashCode felülírása biztosítja az Equals-szel való összhangot és az objektumok helyes működését hash-struktúrákban.