我怎样才能施放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();
}
Run Code Online (Sandbox Code Playgroud)
Ani*_*Ani 16
没有具体的用例,很难回答这个问题,但你可能会 发现只需转换到非泛型IEnumerable接口就足够了.
对于大多数被认为是"序列"的类型,这通常有两个原因.
IEnumerable.IEnumerable<T>接口继承自IEnumerable,因此转换应该适用于System.Collections.Generic,LINQ序列等中的泛型集合类.编辑:
至于为什么你提供的样本不起作用:
IEnumerable<Derived>视为一个IEnumerable<Base>.IEnumerable<T>存在协变性,但这在C#4中不起作用,因为值类型不支持方差 - 来自int[](an IEnumerable<int>)- >的转换 IEnumerable<object> 不能成功.Bra*_*AGr 14
我遇到同样的问题,协方差不支持值类型,我有一个object和实际类型,List<Guid>需要一个IEnumerable<object>.只有IEnumerable不够好才能生成IEnumerable的方法是使用linq Cast方法
((IEnumerable)lhsValue).Cast<object>()
Run Code Online (Sandbox Code Playgroud)