Sobes.tech
Junior — Middle

Nima uchun sinflarda GetHashCode metodini qayta yozish muhim?

sobes.tech AI

AIdan javob

GetHashCode usulining yozilishi, Dictionary, HashSet va boshqa hash asosidagi to'plamlarda obyektlarning to'g'ri ishlashini ta'minlash uchun muhimdir.

Sabablari:

  • GetHashCode tezda obyektni qidirish uchun ishlatiladigan raqamli qiymatni qaytaradi.
  • Agar ikki obyekt teng deb hisoblanadigan bo'lsa (Equals metodi bilan), ular bir xil hash-kodni qaytarishi kerak, shunda to'plamlar ularni to'g'ri ishlatadi.
  • Agar GetHashCode Equals bilan birga qayta yozilmasa, obyektlar noto'g'ri solishtirilishi yoki takrorlanishi mumkin.

Misol:

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

Shu tarzda, GetHashCode ning qayta yozilishi Equals bilan muvofiqlikni ta'minlaydi va obyektlarning hash tuzilmalarida to'g'ri ishlashini kafolatlaydi.