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