Junior — Middle
Какви стъпки трябва да се предприемат, за да използвате собствен клас като ключ в колекция от тип речник?
sobes.tech AI
Отговор от AI
За да използвате собствен клас като ключ в речник (Dictionary<TKey, TValue>) в C#, трябва да осигурите правилно сравнение на ключовете и изчисляване на техните хеш кодове. За това трябва:
- Да презапишете метода
Equals(object obj), така че да сравнява правилно обектите на вашия клас по значимите полета. - Да презапишете метода
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> и да го предадете на конструктора на речника, ако не искате да променяте самия клас.