参见英文答案 >
Why does (does it really?) List<T> implement all these interfaces,not just IList<T>?5个
我对C#中接口的继承语法有点不清楚.
我对C#中接口的继承语法有点不清楚.
例如:
public interface IFoo { } public interface IBar : IFoo { }
这有什么区别:
public interface IQux : IBar { }
还有这个:
public interface IQux : IBar,IFoo { }
或者,对于现实世界的例子,为什么ICollection< T>宣称是这样的:
public interface ICollection<T> : IEnumerable<T>,IEnumerable
而不是这个:
public interface ICollection<T> : IEnumerable<T>
鉴于IEnumerable< T>已经从IEnumerable继承?
解决方法
Eric Lippert在本文中解释得非常好:
https://blogs.msdn.microsoft.com/ericlippert/2011/04/04/so-many-interfaces
如果IBar继承自IFoo,那么从编译器的角度来看,两者之间没有区别:
public interface IQux : IBar { }
还有这个:
public interface IQux : IBar,IFoo { }
如果您认为IQux使代码更具可读性,您可以选择声明IQux包含IFoo.或者你可以选择不这样做.