Sobes.tech
Junior — Middle

O'z klassingizni lug'at turidagi to'plamda kalit sifatida ishlatish uchun qanday qadamlar bajarilishi kerak?

sobes.tech AI

AIdan javob

C# tilida Dictionary<TKey, TValue> ichki kalit sifatida o'z sinfingizni ishlatish uchun, kalitlarning to'g'ri solishtirilishini va ularning hash kodlarini hisoblashni ta'minlash kerak. Buning uchun:

  1. Equals(object obj) metodini qayta yozing, shunda u sinfingiz ob'ektlarini muhim maydonlar bo'yicha to'g'ri solishtiradi.
  2. GetHashCode() metodini qayta yozing, shunda teng hisoblangan ob'ektlar bir xil hash kodiga ega bo'ladi.

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

Alternativ ravishda, IEqualityComparer<T> interfeysini amalga oshirib, uni lug'atning konstruktoriga o'tkazishingiz mumkin, agar sinfni o'zgartirmoqchi bo'lmasangiz.