Sobes.tech
Junior — Middle

Hash-dastur yoki hash-collectiondan foydalanishda GetHashCode metodining roli nima?

sobes.tech AI

AIdan javob

GetHashCode usuli C# da lug'atlar (Dictionary) va boshqa hash to'plamlarda asosiy rol o'ynaydi. U ob'ektning hash-kodini (butun son qiymati) qaytaradi, bu esa ob'ektning hash jadvalida tezda joylashishini aniqlash uchun ishlatiladi.

Ob'ektni lug'atga qo'shishda, avvalo GetHashCode chaqiriladi va element joylashtiriladigan qutich (bucket) aniqlanadi. Kalit bo'yicha elementni qidirishda ham avvalo hash-kod hisoblanadi, shundan so'ng to'g'ri qutich tezda topiladi va aniq solishtirish uchun Equals chaqiriladi.

Muhim shuki:

  • Agar ikki ob'ekt teng bo'lsa (Equals true qaytaradi), ularning GetHashCode qiymatlari ham bir xil bo'lishi kerak.
  • Yaxshi taqsimlangan hash-kodlar koliziyalarni kamaytiradi va ishlash tezligini oshiradi.

Yozib chiqish misoli:

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