Sobes.tech
Junior — Middle

Sözlük və ya hash kolleksiyası istifadə edərkən GetHashCode metodunun rolu nədir?

sobes.tech Süni İntellekt

AI-dan cavab

GetHashCode metodu, C# dilində sözlüklər (Dictionary) və digər hash kolleksiyalarından istifadə zamanı əsas rol oynayır. Bu metod, obyektin hash kodunu (tam ədəd dəyər) qaytarır və obyektin hash cədvəlində tez yerləşdirilməsini təmin edir.

Obyektin sözlüyə əlavə olunması zamanı əvvəlcə GetHashCode çağırılır və elementin yerləşdiriləcəyi səbət (bucket) müəyyən edilir. Açar ilə obyekt axtarışında da əvvəlcə hash kodu hesablanır ki, düzgün səbət tez tapılsın və sonra dəqiq müqayisə üçün Equals çağırılır.

Əhəmiyyətlidir ki:

  • Əgər iki obyekt bərabərdirsə (Equals true qaytarırsa), onların GetHashCode dəyərləri də eyni olmalıdır.
  • Yaxşı paylanmış hash kodları toqquşma sayını azaldır və performansı artırır.

Yenidən yazma nümunəsi:

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