Sobes.tech
Junior — Middle

Waarom is het belangrijk om de methode GetHashCode te overschrijven in klassen?

sobes.tech AI

Antwoord van AI

Het overschrijven van de GetHashCode-methode is belangrijk voor het correct functioneren van objecten in op hash gebaseerde collecties, zoals Dictionary, HashSet en anderen.

Redenen:

  • GetHashCode geeft een numerieke waarde terug die wordt gebruikt voor snelle zoekopdrachten naar een object in hash-tabellen.
  • Als twee objecten als gelijk worden beschouwd (volgens de Equals-methode), moeten ze dezelfde hash-code retourneren zodat de collecties ze correct kunnen verwerken.
  • Als GetHashCode niet samen met Equals wordt overschreven, kunnen objecten onjuiste vergelijkingen ondergaan of worden gedupliceerd in de collecties.

Voorbeeld:

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

Op deze manier zorgt het overschrijven van GetHashCode voor consistentie met Equals en een correcte werking van objecten in hash-structuren.