Junior — Middle
Nima uchun .NET sinfida GetHashCode va Equals metodlari qayta yoziladi?
sobes.tech AI
AIdan javob
.NETда, GetHashCode ва Equals методлари объектларни тўғри солиштириш ва коллекциялар билан, масалан, луғатлар (Dictionary) ва жамланмалар (HashSet), тўғри ишлашини таъминлаш учун қайта белгилашади.
- Equals икки объектнинг маънода тенг бўлишини қўйишни аниқлайди.
- GetHashCode объектни тез топиш учун ишлатиладиган рақамли кодни қайтарadi.
Агар фақат 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);
}
}