Sobes.tech
Junior — Middle

Какви стъпки трябва да се предприемат, за да използвате собствен клас като ключ в колекция от тип речник?

sobes.tech AI

Отговор от AI

За да използвате собствен клас като ключ в речник (Dictionary<TKey, TValue>) в C#, трябва да осигурите правилно сравнение на ключовете и изчисляване на техните хеш кодове. За това трябва:

  1. Да презапишете метода Equals(object obj), така че да сравнява правилно обектите на вашия клас по значимите полета.
  2. Да презапишете метода GetHashCode(), така че обектите, които се считат за равни, да имат еднакъв хеш код.

Пример:

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

Алтернативно, можете да реализирате интерфейса IEqualityComparer<T> и да го предадете на конструктора на речника, ако не искате да променяте самия клас.