2016-11-10 58 views
0

我有一個包含字符串的自定義類。我的程序有這些類的數組,我希望能夠將這些類的一個數組與另一個進行比較。要實現哪個接口來比較陣列

我已經實現了IComparable接口,如下所述: http://www.informit.com/articles/article.aspx?p=25352&seqNum=4但我發現這不允許我比較一個數組與另一個數組。 (它讓我排序的數組)

public class MyClass : IComparable<MyClass> 
    { 
     #region Private 
     private string _name; 
     #endregion 

     #region Public 

     [XmlElement("Name")] 
     public string Name 
     { 
      get{return _name;} 
      set{_name= value;} 
     } 
     #endregion 

     public int CompareTo(MyClass class) 
     { 
      string s1 = this.Name; 
      string s2 = class.Name; 
      return String.Compare(s1, s2); 
     } 

     override public string ToString() 
     { 
      return _name; 
     } 
    } 

我的程序有這些類的這樣一個數組:

MyClass class1 = new MyClass(); 
class1.Name = "a"; 

MyClass class2 = new MyClass(); 
class2.Name = "b"; 

MyClass class3 = new MyClass(); 
class3.Name = "c"; 

MyClass class4 = new MyClass(); 
class4.Name = "d"; 

MyClass[] classes1 = { class1, class2, class3} 
MyClass[] classes2 = { class1, class2, class4}; 

我可以排序類別中,如果需要的話:

Array.Sort(classes2); 

我需要實現什麼接口才能將一個陣列與另一個陣列進行比較以查看它們是否相等?

編輯 我的類是定製的,所以我想知道實現的東西接口,如何實現它,以及如何使用它不會從任何接口繼承。此示例使用非定製對象:Easiest way to compare arrays in C#

+1

對不起,我以爲你指的是排序,而不是比較:-P – CodeNaked

+0

你用與創建單個對象的比較器完全相同的方式爲數組創建一個比較器。您可以創建比較器,並在'Compare'方法中編寫任何您想要的內容。你有什麼問題實施的? – Servy

回答

0

您的課程需要覆蓋Equals方法。
或者,您可以實現IEquatable接口。
然後,您可以將「SequenceEquals」LINQ操作符應用於您的陣列,以實現您的願望。