前提知識(知っている方はスキップ推奨) そもそもValueObjectって何? ざっくりいうと、システム固有のオブジェクト(独自型)です。 値が持つビジネスルールを表現することができます。 詳しくはググってみてください。 そもそもハッシュ関数って何? 入力されたデータを"何らかの値"にして返却する関数です。 "何らかの値"を生成するときは、ある一定のルールに従って行われます。 したがって、同じ値をハッシュ関数に与えると、同じ値が返却されます。 尚、ハッシュ関数が返却する値をハッシュ値と言います。 ValueObjectが単一の値しか持たない場合 プロパティに対してGetHashCode()をするだけでOKです。 public class Id { public int Value { get; set;} // ...略 public override int GetHashCode()