1. ホーム
  2. c#

構造体の中で、等式が正しく動作するようにオーバーライドする必要があるのは何ですか?

2023-09-21 05:43:58

質問

タイトルの通りです。 == 演算子はどうでしょうか? .Equals() メソッドはどうでしょうか?何か見逃しているものはありますか?

どのように解決するのですか?

msdnの例

public struct Complex 
{
   double re, im;
   public override bool Equals(Object obj) 
   {
        return obj is Complex c && this == c;
   }
   public override int GetHashCode() 
   {
      return re.GetHashCode() ^ im.GetHashCode();
   }
   public static bool operator ==(Complex x, Complex y) 
   {
      return x.re == y.re && x.im == y.im;
   }
   public static bool operator !=(Complex x, Complex y) 
   {
      return !(x == y);
   }
}