首页 > 代码库 > IComparable和IComparer接口的简析

IComparable和IComparer接口的简析

     默认情况下,对象的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");
}

       

IComparable和IComparer接口的简析