List<Person> personlist;
我怎麼能轉換成
IEnumerable<IPerson> iPersonList
人用工具IPerson接口
List<Person> personlist;
我怎麼能轉換成
IEnumerable<IPerson> iPersonList
人用工具IPerson接口
如果你在.NET 4.0或更高版本的時候,你可以做隱式轉換:
IEnumerable<IPerson> iPersonList = personlist;
//or explicit:
var iPersonList = (IEnumerable<IPerson>)personlist;
這將使用通用逆變在IEnumerable<out T>
- 即因爲你永遠只能得到一些了的IEnumerable
,你可以如果T : U
含蓄地將IEnumerable<T>
轉換爲IEnumerable<U>
。 (它也使用了List<T> : IEnumerable<T>
)
否則,您必須使用LINQ投每個項目:
var iPersonList = personlist.Cast<IPerson>();
可以使用IEnumerable.Cast
var iPersonList = personlist.Cast<IPerson>();
@ManishSingh你必須添加'using System.Linq;' – juharr 2016-12-08 12:39:06
由於.NET 4.0中,你可以通過List<Person>
的方法與IEnumerable<IPerson>
類型的無隱含參數或明確的鑄造。
隱式轉換是自動完成(如果可能的話),這要歸功於contravariance
你可以這樣做:
var people = new List<Person>();
// Add items to the list
ProcessPeople(people); // No casting required, implicit cast is done behind the scenes
private void ProcessPeople(IEnumerable<IPerson> people)
{
// Processing comes here
}
'名單'是一個'IEnumerable的'。 –
2013-02-25 16:41:46
patrickinmpls你最終想要做什麼..?你可以嘗試查找'Cast'擴展方法 – MethodMan 2013-02-25 16:42:51