Sobes.tech
Back to questions
Junior — Middle
63

Как связаны между собой методы Equals и GetHashCode в объектно-ориентированном программировании?

Answer from AI

sobes.tech AI

В C# методы Equals и GetHashCode тесно связаны и используются для сравнения объектов и работы с хэш-таблицами (например, в Dictionary или HashSet).

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

Важно, что если два объекта равны (Equals возвращает true), то их хэш-коды должны совпадать. Это необходимо для корректной работы коллекций, основанных на хэшировании.

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

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

Таким образом, правильная реализация обоих методов гарантирует корректное поведение объектов в коллекциях и при сравнении.