Sobes.tech
Back to questions
Junior — Middle
70

В чем заключается роль метода GetHashCode при использовании словаря или хэш-коллекции?

Companies where asked
OZONOZON

Answer from AI

sobes.tech AI

Метод GetHashCode играет ключевую роль при использовании словарей (Dictionary) и других хэш-коллекций в C#. Он возвращает целочисленное значение (хэш-код), которое используется для быстрого определения позиции объекта в хэш-таблице.

Когда вы добавляете объект в словарь, сначала вызывается GetHashCode, чтобы определить корзину (bucket), в которую будет помещён элемент. При поиске элемента по ключу также сначала вычисляется хэш-код, чтобы быстро найти нужный bucket, а затем вызывается Equals для точного сравнения.

Важно, чтобы:

  • Если два объекта равны (Equals возвращает true), то их GetHashCode должен возвращать одинаковое значение.
  • Хорошо распределённые хэш-коды уменьшают количество коллизий и повышают производительность.

Пример переопределения:

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