Junior — Middle
Чаро дар синфи .NET усулҳои GetHashCode ва Equals навиштани дубора мешаванд؟
sobes.tech AI
Ҷавоб аз AI
.NETда, GetHashCode ва Equals методлари объектларни тўғри солиштириш ва коллекциялар билан, масалан, луғатлар (Dictionary) ва жамланмалар (HashSet), тўғри ишлашини таъминлаш учун қайта белгилашади.
- Equals икки объектнинг маънода тенг бўлишини қўйишни аниқлайди.
- GetHashCode объектни тез топиш учун ишлатиладиган рақамли кодни қайтаради.
Агар фақат Equals қайта белгилашса, лекин GetHashCode-ни қайта белгиламаса, объектлар хэш коллекцияларида нотўғри ишлаши мумкин. Ушбу методлар одатда бирга қайта белгилашади, уларнинг мувофиқлиги учун: агар Equals true қайтарса, уларнинг GetHashCode ҳам бир хил қиймат қайтариши керак.
Масалан:
public 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);
}
}