2016-06-19 6 views
0

Ich musste die Gleichheit zweier zweidimensionaler Arrays vergleichen. Ich habe versucht, StructuralComparisons.StructuralEqualityComparer.Equals(obj1, obj2) zu verwenden, und es funktioniert.Verwenden der StructuralComparisons-Klasse für alles

So, jetzt habe ich diese Methode (in Helpers Utility-Klasse):

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

Und eine Frage: Welche Methode soll ich verwenden, wenn ich nicht weiß, ob Typ T-Struktur (dh Array) oder Klasse ? Object.Equals oder dieser?

Antwort

0

Die Antwort ist ja.

In solchen Situationen können wir StructuralComparisons comparer verwenden, weil es überprüft, ob erstes Objekt implementiert IStructuralEquatable und wenn es wirklich implementiert, dann verwendet es IStructuredEquatable.Equals() Methode, sonst wird es verwendet obj1.Equals(obj2).

Die Durchführung dieses Verfahrens ist unten

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; 
} 
aufgelistet
Verwandte Themen