Junior — Middle
Қадамҳои заруриро барои истифодаи синфи худ ҳамчун калид дар коллексияи навъи луғат бояд иҷро кард?
sobes.tech AI
Ҷавоб аз AI
Барои истифодаи синфи худ ҳамчун калид дар луғат (Dictionary<TKey, TValue>) дар C# бояд муқоиса кардани калидҳо ва ҳисоб кардани кодҳои hash-и онҳоро таъмин кунед. Барои ин:
- Методи
Equals(object obj)-ро такрор кунед, то ки он ду объекти синфи шуморо дуруст муқоиса кунад бо асоси майдонҳои муҳим. - Методи
GetHashCode()-ро такрор кунед, то ки объектҳое, ки баробар ҳисобида мешаванд, якхела код hash дошта бошанд.
Масалан:
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);
}
}
Алтернатива, шумо метавонед интерфейси IEqualityComparer<T>-ро амалӣ кунед ва онро ба конструктори луғат гузаронед, агар нахоҳед, ки синфро тағир диҳед.