A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qsq0000hm 中级黑马   /  2014-8-1 10:59  /  1208 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 qsq0000hm 于 2014-8-1 13:48 编辑

这两个接口搞晕了。

public interface IComparable
    {
        int CompareTo(object obj);
    }
public interface IComparer
    {      
        int Compare(object x, object y);
    }
Sort()方法,如果没有参数,则类型必须实现了IComparable接口才能Sort排序。 也可以传入一个实现了 IComparer接口的类型,也就是所谓的比较器了。但是这两个接口里面的方法分别是怎么就实现排序的,搞的有点晕呼呼的,为什么不合成一个接口,既可以类实现这个接口,也可以传一个实现这个接口的类型

评分

参与人数 1技术分 +1 收起 理由
陈君 + 1

查看全部评分

3 个回复

倒序浏览
1.IComparable 接口向对象的用户宣布该对象可以将自身与同一类型的其他对象进行比较,而接口的用户不需要知道相关的实现方式。
2. ICompararer用于实现一个专门的“比较器”,这个比较器可以对传入的两个对象比较大小。

评分

参与人数 1技术分 +1 收起 理由
陈君 + 1

查看全部评分

回复 使用道具 举报
许庭洲 发表于 2014-8-1 11:08
1.IComparable 接口向对象的用户宣布该对象可以将自身与同一类型的其他对象进行比较,而接口的用户不需要知 ...

可不可以这么理解,类实现IComparable接口,就是显式的告诉别人这个类的对象是可以被比较的,具体比什么,怎么比,就是看怎么实现这个接口的方法了,体现多态。
然后,实现IComparer接口的类,就是用来写比较器的,我们不管这个要比较的类的对象是否可以进行比较,直接通过sort方法传入比较器,调用这个比较器,将类的对象放入这个比较器进行比较,具体怎么比,比什么,也是看怎么实现IComparer接口的方法了。
回复 使用道具 举报
qsq0000hm 发表于 2014-8-1 11:33
可不可以这么理解,类实现IComparable接口,就是显式的告诉别人这个类的对象是可以被比较的,具体比什么 ...

嗯嗯,说的太对了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马