Sobes.tech
Junior — Middle

Қадамҳои заруриро барои истифодаи синфи худ ҳамчун калид дар коллексияи навъи луғат бояд иҷро кард?

sobes.tech AI

Ҷавоб аз AI

Барои истифодаи синфи худ ҳамчун калид дар луғат (Dictionary<TKey, TValue>) дар C# бояд муқоиса кардани калидҳо ва ҳисоб кардани кодҳои hash-и онҳоро таъмин кунед. Барои ин:

  1. Методи Equals(object obj)-ро такрор кунед, то ки он ду объекти синфи шуморо дуруст муқоиса кунад бо асоси майдонҳои муҳим.
  2. Методи 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>-ро амалӣ кунед ва онро ба конструктори луғат гузаронед, агар нахоҳед, ки синфро тағир диҳед.