IEqualityComparer<T>接口的对象的主要作用在于自定义判断两个对象是否相等。
其中最常用的方法: bool Equals(T x, T y);
实现该方法用于比较两个对象是否相等。如果指定的对象相等,则为 true;否则为 false。
代码示例:
class Program
{
static void Main(string[] args)
{
People p1 = new People(1, "刘备", 23);
People p2 = new People(1, "关羽", 22);
People p3 = new People(1, "张飞", 21);
List<People> listP1 = new List<People>();
listP1.Add(p1);
listP1.Add(p2);
listP1.Add(p3);
People p4 = new People(2, "赵云", 23);
People p5 = new People(2, "黄忠", 22);
People p6 = new People(2, "马超", 21);
List<People> listP2 = new List<People>();
listP2.Add(p4);
listP2.Add(p5);
listP2.Add(p6);
Comparers c = new Comparers();
bool b = listP1.SequenceEqual(listP2, c); //只要集合中的对象年龄相等就视对象为相等
Console.WriteLine(b); //输出 True
Console.ReadKey();
}
}
public class Comparers : IEqualityComparer<People>
{
public bool Equals(People p1, People p2)
{
if (p1.Age == p2.Age)
{
return true;
}
return false;
}
public int GetHashCode(People obj)
{
throw new NotImplementedException();
}
}
public class People
{
public People(int id, string name, int age)
{
this.Id = id;
this.Name = name;
this.Age = age;
}
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
}