Sobes.tech
Junior — Middle

Waarom worden de methoden GetHashCode en Equals overschreven in een .NET-klasse?

sobes.tech AI

Antwoord van AI

In .NET worden de methoden GetHashCode en Equals overschreven voor correcte vergelijking van objecten en juiste werking met collecties zoals Dictionary en HashSet.

  • Equals bepaalt wanneer twee objecten als gelijk worden beschouwd.
  • GetHashCode geeft een numerieke code terug die wordt gebruikt voor snelle zoekopdrachten in hash-tabellen.

Als je alleen Equals overschrijft, maar niet GetHashCode, kunnen objecten niet correct werken in hash-collecties. Deze methoden worden meestal samen overschreven om consistentie te garanderen: als Equals true retourneert voor twee objecten, moet hun GetHashCode hetzelfde zijn.

Voorbeeld:

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