IComparable和IComparer的区别/IEnumerable 和IEnumerator的区别

1、IComparable接口要实现CompareTo方法,并且一定要通过值可以排序的类型来实现,例如基本数值类型(整型等),或者字符串,对应的泛型为IComparable<T>
2、IComparer接口其实是特定用于Array的Sort和BinarySearch方法,通过实现IComparer接口的Compare方法以确定Sort如何进行对对象进行排序,对应的泛型为IComparer<T>
3、IEnumerable接口主要实现了GetEnumerator方法,该方法返回一个IEnumerator,类A实现IEnumerable接口后,调用foreach语法的时候,会自动的调用GetEnumerator方法,然后在这个IEnumerator中遍历,对应的泛型为IEnumerable<T>
4、IEnumerator有两个方法MoveNext()、Reset()和一个属性Current用于迭代IEnumerator对象中对象集合实现这些方法,派生类就可以用foreach这种语法了,所以只要实现两者之中任意一个接口,就可以用foreach语法了,本质上都是对IEnumerator做foreach,只是一个是直接,一个是间接,对应的泛型为IEnumerator<T>
5、其实把IComparable和Icomparer,IEnumerable和IEnumerator分开为两个接口来定义,是遵从面向对象的思维定向,表示对象可以比较,对象可以迭代,Icomparer,负责对对象进行比较,IEnumerator负责对对象进行迭代,各司其职罢了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值