[英]Cast object to IEnumerable<object>?
如何將object
為IEnumerable<object>
?
我知道該對象實現了IEnumerable<object>
但我不知道它是什么類型。 它可以是一個數組,一個List<T>
,或者其他什么。
一個簡單的測試用例我正在努力工作:
static void Main(string[] args)
{
object arr = new[] { 1, 2, 3, 4, 5 };
foreach (var item in arr as IEnumerable<object>)
Console.WriteLine(item);
Console.ReadLine();
}
沒有具體的用例,很難回答這個問題,但是你可能會發現只需轉換到非通用的IEnumerable
接口就足夠了。
對於大多數被認為是“序列”的類型,這通常有兩個原因。
IEnumerable
。 IEnumerable<T>
接口繼承自IEnumerable
,因此轉換應該適用於System.Collections.Generic,LINQ序列等中的泛型集合類。 編輯 :
至於為什么你提供的樣本不起作用:
IEnumerable<Derived>
視為IEnumerable<Base>
。 IEnumerable<T>
是協變的,但這在C#4中不起作用,因為值類型不支持方差 - 來自int[]
( IEnumerable<int>
) - > IEnumerable<object>
不能成功。 我遇到了同樣的問題,協方差不支持值類型,我有一個object
和實際類型的List<Guid>
,需要一個IEnumerable<object>
。 只有IEnumerable不夠好才能生成IEnumerable的方法是使用linq Cast方法
((IEnumerable)lhsValue).Cast<object>()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.