Sobes.tech
Junior — Middle

Чаро муҳим аст, ки усулро GetHashCode дар синфҳо барқарор кунем?

sobes.tech AI

Ҷавоб аз AI

Дубора кардани усули GetHashCode муҳим аст барои кори дурустии объектҳо дар ҷамъоварӣҳои асосёфта ба хеш, монанди Dictionary, HashSet ва дигарҳо.

Сабабҳо:

  • GetHashCode арзиши рақамӣ бармегардонад, ки барои ҷустуҷӯи зудтарини объект дар ҷадвалҳои хеш истифода мешавад.
  • Агар ду объект баробар ҳисобида шаванд (баъд аз усули Equals), онҳо бояд ҳамон коди хешро баргардонанд, то ҷамъоварӣҳо онҳоро дуруст коркард кунанд.
  • Агар GetHashCode бо Equals навишта нашуда бошад, объектҳо метавонанд нодуруст муқоиса ё такрор шаванд дар ҷамъоварӣҳо.

Масалан:

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

Ин гуна, навиштани GetHashCode мутобиқат бо Equals ва кори дурустии объектҳоро дар сохторҳои хеш таъмин мекунад.