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