Sobes.tech
Junior — Middle

Kokius žingsnius reikia atlikti, kad savo klasę naudotumėte kaip raktą žodynų kolekcijoje?

sobes.tech AI

Atsakymas iš AI

Norėdami naudoti savo klasę kaip raktą Dictionary<TKey, TValue> C# kalboje, turite užtikrinti teisingą raktų palyginimą ir jų maišos kodų apskaičiavimą. Tam reikia:

  1. Perrašyti metodą Equals(object obj), kad jis teisingai palygintų jūsų klasės objektus pagal reikšmingus laukus.
  2. Perrašyti metodą GetHashCode(), kad lygūs objektai turėtų tą patį maišos kodą.

Pavyzdys:

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

Alternatyviai, galite įgyvendinti IEqualityComparer<T> sąsają ir perduoti jį į žodyno konstruktorių, jei nenorite keisti pačios klasės.