Sobes.tech
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:

  • GetHashCode returnează 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ă cu Equals, 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.