Рассмотрим следующие объекты:
class Route
{
public int Origin { get; set; }
public int Destination { get; set; }
}
Route реализует операторы равенства.
class Routing
{
public List<Route> Paths { get; set; }
}
Я использовал приведенный ниже код для реализации метода GetHashCode для объекта маршрутизации, и он, кажется, работает, но мне интересно, правильно ли это сделать? Я полагаюсь на проверки на равенство, и, поскольку я не уверен, я подумал, что спрошу вас, ребята. Могу ли я просто суммировать хеш-коды или мне нужно больше магии, чтобы гарантировать желаемый эффект?
public override int GetHashCode() =>
{
return (Paths != null
? (Paths.Select(p => p.GetHashCode())
.Sum())
: 0);
}
Я проверил несколько GetHashCode()
вопросов здесь, а также MSDN и статью Эрика Липперта по этой теме, но не смог найти то, что ищу.