首页 新闻 会员 周边 捐助

接口 子类父类转化问题

0
悬赏园豆:10 [已解决问题] 解决于 2016-04-12 16:36

  一个接口父类,一个继承的子类

问,如何将子类列表转化为父类列表,比如

IList<student> students= new List<student> ();

List<IFather> fathers  = (List<IFather>)students;//在这里就没法转化了,求大婶测试后给我指点一下怎么转化

代码小兵的成长的主页 代码小兵的成长 | 菜鸟二级 | 园豆:303
提问于:2016-04-02 13:23
< >
分享
最佳答案
0

使用IEnumerable<out T>,可以进行协变

收获园豆:9
jello chen | 大侠五级 |园豆:7336 | 2016-04-02 15:14

查了好久,不会,有例子吗

代码小兵的成长 | 园豆:303 (菜鸟二级) | 2016-04-02 18:51

@代码小兵的成长: IEnumerable<IFather> fathers = new List<Student>();其中,Student继承IFather

jello chen | 园豆:7336 (大侠五级) | 2016-04-02 19:11

@jello chen: 我先测试一下把,问题是你这种和IList<IFather> fathers = new List<Student>();没啥区别把,转不了应该

代码小兵的成长 | 园豆:303 (菜鸟二级) | 2016-04-07 09:08

@代码小兵的成长: 在尝试之前,不要轻易下结论

jello chen | 园豆:7336 (大侠五级) | 2016-04-07 10:26

@jello chen: 确实是,虽然我知道List<>继承自IEnumerable<>,但是原因还是没搞懂,毕竟List<>转ICollection<>没成功

代码小兵的成长 | 园豆:303 (菜鸟二级) | 2016-04-11 14:41

@代码小兵的成长: 协变,List<T>和IEnumerable<out T>区别很明显

jello chen | 园豆:7336 (大侠五级) | 2016-04-11 15:42

@jello chen: 嗯嗯,专门搞清楚这个东西有空

代码小兵的成长 | 园豆:303 (菜鸟二级) | 2016-04-12 16:35
其他回答(3)
0

遍历老的列表,然后一个一个加入到新的列表中

收获园豆:1
刘宏玺 | 园豆:14020 (专家六级) | 2016-04-02 14:06

这么惨啊,好可怜

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2016-04-02 14:38

@代码小兵的成长: 你可以这一个扩展方法方便以后使用,可以写成通用的

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-04-02 14:40

@刘宏玺: 自己写的太烂了,不过必须要转了

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2016-04-02 18:52
0

IList是个什么鬼

Iltxy | 园豆:209 (菜鸟二级) | 2016-04-04 09:29

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2016-04-07 09:07
0

IFather是student的父类。List<IFather>不是IList<student>的父类。没法转换。

aazdf | 园豆:110 (初学一级) | 2016-04-05 16:42

只能说没法直接转换

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2016-04-07 09:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册