考虑以下对象:
class Route
{
public int Origin { get; set; }
public int Destination { get; set; }
}
Route 实现了相等运算符。
class Routing
{
public List<Route> Paths { get; set; }
}
我使用下面的代码为 Routing 对象实现 GetHashCode 方法,它似乎有效,但我想知道这是否是正确的方法?我依靠平等检查,因为我不确定,我想我会问你们。我可以只对哈希码求和还是需要做更多的魔术才能保证达到预期的效果?
public override int GetHashCode() =>
{
return (Paths != null
? (Paths.Select(p => p.GetHashCode())
.Sum())
: 0);
}
我在这里检查了几个GetHashCode()
问题以及 MSDN 和 Eric Lippert 关于此主题的文章,但找不到我要查找的内容。