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:
Equals(object obj)metodini qayta yozing, shunda u sinfingiz ob'ektlarini muhim maydonlar bo'yicha to'g'ri solishtiradi.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.