当前位置: 代码迷 >> 综合 >> C#内建接口:IComparable
  详细解决方案

C#内建接口:IComparable

热度:25   发布时间:2024-01-12 07:55:11.0

    这节开一个新的系列:C#内建接口。主要给大家讲一下C#内部给我们定义的一些常用的接口,以及它们是怎么使用的。基本上一节讲一个吧,本节先从IComparable开始。

01

了解IComparable

    一般的,值类型的数据比较大小,就是看它俩的值,这种比较很单纯,但是也有某些情况,我们需要对引用类型进行比较,也就是说比较两个对象谁大谁小,对象之间的比较其实就是根据业务需求,比较其属性,为了统一一个对象比较之间的规范,C#中定义了一个名为IComparable的接口,顾名思义,继承了这个接口的对象都是可比较的嘛,那下面就来看看这个接口的成员吧:

7f07969f99f466a7a8d5cbf7700e9e5d.png

    这个接口还是很简单的 ,就一个CompareTo方法,参数是可空类型的任意对象,返回一个int数字,意思就是比较的结果如果是小于,则返回-1,等于返回0,大于则返回1,或者根据您的业务,返回任何数字都是可以。

02

代码演示

    下面从代码中演示一下它的使用:

19680876ae3c01a398ca15687bd7cd67.png

    以上是一个矩形类,有宽和高两个属性,比较矩形大小就是比较其面积大小,所以我继承了IComparable接口,并将面积比较代码写在了里面,具体代码很简单,也就不做解释了,但大家需要注意一点,因为参数是object类型,并且引用类型可以为空,所以不要忘记一些比较的参数检查。

    下面用一个控制台程序为大家做一下结果演示:

6743cd196c6c8835b3e15591f3524975.png

    上图代码中我创建了两个对象,一个是12*12的samll,一个是24*24的big,输出结果为:

0db194651d332ff74d360a384b264857.png

    大家也许注意到了我注释掉的代码,string也是实现了这个接口的,有兴趣的同学可以自己写写代码测试一下,字符串之间是根据其字符的ASCII表位置来比较的,如果第一个字符相同,则比较第二个,这样以此类推。

本节到此结束...