Sobes.tech
Junior — Middle

Niyə .NET sinifində GetHashCode və Equals metodları yenidən təyin edilir?

sobes.tech Süni İntellekt

AI-dan cavab

.NET-də, GetHashCode və Equals metodları obyektlərin düzgün müqayisəsi və kolleksiyalarla, məsələn, Sözlüklər (Dictionary) və Kümələr (HashSet), düzgün işləməsi üçün yenidən təyin edilir.

  • Equals iki obyektin mənada bərabər sayılmasını müəyyən edir.
  • GetHashCode, obyektin tez tapılması üçün istifadə olunan ədədi kodu qaytarır.

Əgər yalnız Equals yenidən təyin etsəniz, lakin GetHashCode-u təyin etməsəniz, obyektlər hash kolleksiyalarında düzgün işləməyə bilər. Bu metodlar adətən birlikdə yenidən təyin edilir ki, uyğunluq təmin olunsun: əgər Equals iki obyekt üçün true qaytarırsa, onların GetHashCode də eyni dəyəri qaytarmalıdır.

Nümunə:

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