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