默认情况下,对象的Equals(object o)方法是比较两个对象是否引用同一个对象。如果我们有自己的对象,就要自己定义对象比较方式:
1.IComparable在要比较的对象(类的实例化就是对象)类中实现,可以比较该对象和另一个对象。
2.IComparer在一个单独的类中实现,可以任意比较两个对象。
通俗的讲,IComparable是能够比较,具备比较的能力。比如说某个人具备编程的能力,如果需要对编程能力的高低进行比较的话,就必须在自己的类中去实现怎么具体的方法。IComparer是比较者,属于第三者,它用来对其他对象进行比较,它只是个中间第三方。
1.IComparable提供了一个方法int CompareTo(object obj)这个方法可接受一个对象,实现这个方法可进行比较。
比较Person的年轻:
if(person1.CompareTo(person2) == 0) { Console.WriteLine("Same age"); } else if(person1.CompareTo(person2) > 0 ) { Console.WriteLine("person 1 is older"); } else { Console.WriteLine("person1 is younger"); }
2.IComparer提供了一个方法Compare,这个方法接受两个对象
if(personComparer.Compare(person1,person2) == 0) { Console.WriteLine("same age"); } else if(personComparer.Compare(person1,person2) > 0 ) { Console.WriteLine("person 1 is older"); } else { Console.WriteLine("person1 is younger"); }
原文:http://www.cnblogs.com/xiaowangzi1987/p/6731495.html