Sobes.tech
Back to questions
Junior — Middle
72

Какие шаги необходимо выполнить для того, чтобы использовать собственный класс в качестве ключа в коллекции типа словарь?

Answer from AI

sobes.tech 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> и передать его в конструктор словаря, если не хочется менять сам класс.