GetHashCode

class MyClass {
  ...

  public override string ToString() {
    //値の情報をもれなくstringに変換
    ...
  }

  public override bool Equals(object o) {
    //参照の等価性ではなく値の等価性を判定するようカスタマイズ
    ...
  }

  public override int GetHashCode() {
    return (ToString().GetHashCode());
  }
}

ToStringは値に関して一意に決まるはずなので、GetHashCodeもToStringの値のGetHashCodeを使ってみる。ダメ?

※ダメだ〜

要するに点の等値性をテストするのにEqualsを使いたいわけです。2点の距離を求めて距離が一定の値以内なら等しいとするわけですが、そうするとEqualsがtrueでもToStringが異なる場合があるので、上のコードではダメ。