Sobes.tech
Back to questions
Junior — Middle
65

Как метод GetHashCode влияет на работу словаря в .NET?

Companies where asked
OZONOZON

Answer from AI

sobes.tech AI

Метод GetHashCode в .NET используется для получения хэш-кода объекта, который применяется в хэш-таблицах, например, в словарях (Dictionary<TKey, TValue>).

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

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

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

Неправильная реализация 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);
    }
}

Таким образом, GetHashCode влияет на корректность и эффективность работы словаря.