2016-06-19 3 views
0

2つの2次元配列の等価性を比較する必要がありました。私はStructuralComparisons.StructuralEqualityComparer.Equals(obj1, obj2)を使ってみました。StructuralComparisonsクラスをすべて使用する

は、だから今、私は(Helpersユーティリティクラスで)このメソッドを書いた:

public static bool Equals<T>(T obj1, T obj2) 
{ 
    return StructuralComparisons.StructuralEqualityComparer.Equals(obj1, obj2); 
} 

質問:私はタイプTは、構造体(すなわち配列)またはクラスであるかどうかわからないときの方法私が使用する必要があります? Object.Equalsまたはこれ?

答えて

0

答えははいです。それはそれ以外の場合はobj1.Equals(obj2)を使用して、第1の目的はIStructuralEquatableを実装し、それが本当に実装している場合、それはIStructuredEquatable.Equals()メソッドを使用するかどうかをチェックするために、我々はStructuralComparisons比較子を使用することができ、このような状況では

このメソッドの実装は

public new bool Equals(Object x, Object y) { 
    if (x != null) { 

     IStructuralEquatable seObj = x as IStructuralEquatable; 

     if (seObj != null){ 
      return seObj.Equals(y, this); 
     } 

     if (y != null) { 
      return x.Equals(y); 
     } else { 
      return false; 
     } 
    } 
    if (y != null) return false; 
    return true; 
} 
下に記載されています
関連する問題