Junior — Middle
Чӣ гуна усули GetHashCode ба кории луғат дар .NET таъсир мерасонад?
sobes.tech AI
Ҷавоб аз AI
Метод GetHashCode в .NET се използва за получаване на хеш-кода на обект, който се прилага в хеш таблици, например в речници (Dictionary<TKey, TValue>).
Когато добавяте обект към речник, първо се извиква GetHashCode, за да се определи кошът (bucket), където ще бъде съхранен. При търсене на обект, речникът използва хеш кода за бърз достъп.
Важно е, че:
- Ако двата обекта са равни (според метода
Equals), техните хеш-кодове трябва да съвпадат. - Ако хеш-кодовете се различават, обектите се считат за различни.
Грешната реализация на 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);
}
}
По този начин, GetHashCode влияе върху коректността и ефективността на работата на речника.