接口可以相互继承,子接口可以有父接口的所有属性和方法
如ICollection:IEnumerable之后
ICollection接口应该就有IEnumerable的所有方法
但是有个接口IList:ICollection,IEnumerable
ICollection已经有了IEnumerable接口的属性和方法
所以应该只要这样声明就可以了IList:ICollection
而不用再加一个IEnumerable
还有CollectionBase:IList,ICollection也一样
不知道里面为什么要IList:ICollection,IEnumerable进行声明接口
还有CollectionBase:IList,ICollection这样的类
如ICollection:IEnumerable之后
ICollection接口应该就有IEnumerable的所有方法
但是有个接口IList:ICollection,IEnumerable
ICollection已经有了IEnumerable接口的属性和方法
所以应该只要这样声明就可以了IList:ICollection
而不用再加一个IEnumerable
还有CollectionBase:IList,ICollection也一样
不知道里面为什么要IList:ICollection,IEnumerable进行声明接口
还有CollectionBase:IList,ICollection这样的类
谢谢
class A
{
Action(IEnumerable i1, ICollection i2) { ...}
}
但是A没有必要继承IEnumerable和ICollection呀我的理解是:
IList:ICollection和
IList:ICollection,IEnumerable的效果是一样的之所以写出后一种方式,是为了增加接口或类的易读性。继承了几套接口,使用者就能很明白的看出
它实现了哪几套服务(一个接口就是宣示了一套服务),而不需要关心它的父类继承了那些接口仔细观察一下System.collections的层次结构就可以看出来。
为了IList使用显式接口实现IEnumerable
好处其一是代码简洁,其二是给你看个例子
http://community.csdn.net/Expert/TopicView.asp?id=4010601
显式接口是factory模式很好地实现,他能间接实现函数基于返回值的重载
IList:ICollection,IEnumerable
可以转换为ICollection,IEnumerable
就这么简单