要实现什么接口来比较数组
本文关键字:比较 数组 接口 实现 什么 | 更新日期: 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操作符应用于您的数组,以实现您想要的效果。