首页新闻找找看学习计划

Array是否实现IEnumerable<T>接口?

0
悬赏园豆:20 [待解决问题]

为什么public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector)扩展方法可以由普通字符串数组实例对象调用?根据扩展方法的调用规则来看,实例对象如果需要调用该扩展方法,那该对象的类型需要实现IEnumerable<TSource> 接口,但是c#普通字符窜数组是array类的实例,而array只实现了Ienumerable接口,并未实现Ienumerable<T>接口,根据扩展方法的调用规则普通字符串数组实例就不能调用该扩展方法,请问如何解释?

William Chen的主页 William Chen | 初学一级 | 园豆:174
提问于:2013-03-21 14:17
< >
分享
所有回答(2)
0

可以这么理解:IEnumerable<T>接口(包含)了IEnumerable接口。IEnumerable接口是IEnumerable<T>的一种特殊情况而已。

jone_e | 园豆:1410 (小虾三级) | 2013-03-21 17:30

虽然可以这么理解,但是从严格的语法角度来讲,似乎行不通啊,毕竟Array实现的是Ienumerable,而Ienumerable<T>继承Ienumerable,因此Ienumerable<T>中的一些成员未必由Array实现的。

支持(0) 反对(0) William Chen | 园豆:174 (初学一级) | 2013-03-22 10:29
0

Array只实现了Ienumerable没错,但是String[]是Array的子类,这个在sdk文档里面是看不到的,应该是子类实现了IEnumerable<T>

spbdev | 园豆:202 (菜鸟二级) | 2015-12-02 14:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册