次のオブジェクトについて考えてみます。
class Route
{
public int Origin { get; set; }
public int Destination { get; set; }
}
ルートは等式演算子を実装します。
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の記事を確認しましたが、探しているものが見つかりませんでした。