Sobes.tech
Junior — Middle

Welke stappen moeten worden gevolgd om een eigen klasse als sleutel te gebruiken in een collectie van het type woordenboek?

sobes.tech AI

Antwoord van AI

Om een eigen klasse als sleutel te gebruiken in een Dictionary<TKey, TValue> in C#, moet je zorgen voor een correcte vergelijking van de sleutels en het berekenen van hun hash-codes. Hiervoor moet je:

  1. De methode Equals(object obj) overschrijven zodat deze de objecten van jouw klasse correct vergelijkt op basis van relevante velden.
  2. De methode GetHashCode() overschrijven zodat objecten die als gelijk worden beschouwd dezelfde hash-code hebben.

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

Alternatief kun je de interface IEqualityComparer<T> implementeren en deze doorgeven aan de constructor van de dictionary als je de klasse zelf niet wilt aanpassen.