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 влияе върху коректността и ефективността на работата на речника.