要实现什么接口来比较数组

本文关键字:比较 数组 接口 实现 什么 | 更新日期: 2023-09-27 18:17:14

我有一个包含字符串的自定义类。我的程序有一个这些类的数组,我希望能够比较这些数组中的一个和另一个。

我已经实现了如下所述的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);

我需要实现什么接口来允许我将一个数组与另一个数组进行比较,看看它们是否相等?

编辑我的类是自定义的,不继承任何接口,所以我想知道要实现什么接口,如何实现它以及如何使用它。这个例子使用了非自定义对象:c#中比较数组的最简单方法

要实现什么接口来比较数组

你的类需要重写Equals方法。
或者,您可以实现IEquatable接口。
然后,您可以将"SequenceEquals" LINQ操作符应用于您的数组,以实现您想要的效果。