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 ва кори дурустии объектҳоро дар сохторҳои хеш таъмин мекунад.