реализовать GetHashCode() для объектов, содержащих коллекции

Рассмотрим следующие объекты:

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 и статью Эрика Липперта по этой теме, но не смог найти то, что ищу.

21
задан AustinWBryan 1 July 2018 в 19:58
поделиться