转换列表类型为IEnumerable接口类型 [英] Convert List Type to IEnumerable Interface Type
本文介绍了转换列表类型为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屋!
查看全文