2016-09-09 10 views
-1

以下のジェネリッククラスに対しては、Equalsメソッドを実装する必要があります。Generic型クラスのEqualityメソッドを実装していますか?

public class SomeIdentifier<T> 
     { 
      public T Id { get; set; } 
      public String Name { get; set; } 

      public override bool Equals(object obj) 
      { 
       var other = obj as SomeIdentifier<T>; 
       if (other == null) 
       { 
        return false; 
       } 

       return Id == other.Id && Name == other.Name; 
      } 
     } 

しかし、私は両方としてId == other.Idを比較することは許されないのですが、型Tである

私は、エラーメッセージの下に取得しています*タイプのオペランド「T」に適用することはできません演算子「==」と「T」*

答えて

-2

あなたはTは、あなたがクラス定義でそれを宣言することができます参照型であることがわかっている場合:

public class SomeIdentifier<T> where T : class 
+1

これは、その型SHを前提としていouldは参照型である(その仮定の根拠はなく、OPは値型を処理することも期待できる)。これは常に参照の比較を行うため、この文脈。 – Servy

+0

かなり正しい...代わりにEqualityComparerを使用することができます – GeorgeT

+0

あなたは正しいです、これは別の可能性です。 –

関連する問題