構造体が同一か?


辞書のカギにしたりする構造体。
例えば始点-終点 = 終点-始点が同一とする場合

public struct Edge : IEquatable<Edge>
{
  public int SrcId;
  public int DstId;

  public Edge(int src, int dst)
  {
    this.SrcId = src;
    this.DstId = dst;
  }//end method

  public override string ToString()
  {
    return string.Format("{0} - {1}", this.SrcId, this.DstId);
  }
  public override int GetHashCode()
  {
    return this.ToString().GetHashCode();
  }

  public override bool Equals(object obj)
  {
    if (!(obj is Edge))
      return false;

    return this.Equals((Edge)obj);
  }//end method
  public bool Equals(Edge other)
  {
    return this == other;
  }//end method
  public static bool operator !=(Edge e1, Edge e2)
  {
    return !(e1 == e2);
  }
  public static bool operator ==(Edge e1, Edge e2) 
  {
    return (e1.SrcId == e2.SrcId && e1.DstId == e2.SrcId) ||
            (e1.SrcId == e2.DstId && e1.DstId == e2.DstId);
  }//end method

}//end class
カテゴリー: 開発 タグ: パーマリンク