转换列表类型为IEnumerable接口类型 [英] Convert List Type to IEnumerable Interface Type

查看:108
本文介绍了转换列表类型为IEnumerable接口类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个

List<Person> personlist; 



我怎么能转换成

How can I convert to

IEnumerable<IPerson> iPersonList

人员实现IPerson接口

Person Implements IPerson interface

推荐答案

如果你在.NET 4.0或更高版本,你可以做隐式转换:

If you're in .NET 4.0 or later, you can just do an implicit cast:

IEnumerable<IPerson> iPersonList = personlist;
//or explicit:
var iPersonList = (IEnumerable<IPerson>)personlist;

这使用通用逆变在的IEnumerable<出T> - 即因为你只会得到的东西的的IEnumerable ,您可以隐式转换的IEnumerable< T> 的IEnumerable< U> 如果 T:U 。 (它也使用了列表< T>:IEnumerable的< T>

This uses generic contravariance in IEnumerable<out T> - i.e. since you only ever get something out of an IEnumerable, you can implicitly convert IEnumerable<T> to IEnumerable<U> if T : U. (It also uses that List<T> : IEnumerable<T>.)

否则,您必须投使用LINQ每个项目:

Otherwise, you have to cast each item using LINQ:

var iPersonList = personlist.Cast<IPerson>();

这篇关于转换列表类型为IEnumerable接口类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆