ArrayList声明它实现的IList,ICollection和IEnumeralbe接口.
为什么不实现IList,因为IList也是源自ICollection,并ICollection源自IEnumerable.
这种宣言的目的是什么?在.NET BCL中有很多这样的情况.
Ken*_* K. 13
没有有效的区别.我相信额外的声明是为了清楚.
当反射检查,这在代码实现的类IList具有相同的接口声明列表,其中类代码申报实现所有的Ilist,ICollection和IEnumerable.
使用以下代码:
interface I1 { }
interface I2 : I1 { }
class Foo: I2 { }
Run Code Online (Sandbox Code Playgroud)
如果你通过反思看Foo,你会发现
class Foo: I2, I1 { }
Run Code Online (Sandbox Code Playgroud)
哪个也适用于编译并给出相同的结果.
所以区别是没有意义的,在记录Foo时你也可以用两个接口来编写它.
另请参阅SO问题:为什么C#中的集合类(如ArrayList)从多个接口继承,如果其中一个接口继承其余接口?
| 归档时间: |
|
| 查看次数: |
3335 次 |
| 最近记录: |