将基本类型列表转换为 IEnumerable<object>
Casting a list of a primitive type to a IEnumerable<object>
在我的 C# 程序中,我需要将对象转换为 IEnumerable<object>
。关于那个对象,我只知道它是一个列表 (Type.IsGenericType):
IEnumerable<object> iEnu = myObject as IEnumerable<object>;
if (iEnu != null)
foreach (object o in iEnu)
// do stuff
只要列表的类型不是原始类型,它就可以正常工作,因为所有 类 都继承自对象。但是原始人没有。因此,强制转换为IEnumerable<object>
returns null。如果它是一个整数列表,我需要转换为 IEnumerable<int>
,如果它是一个布尔值列表,则需要转换为 IEnumerable<bool>
,依此类推。当然,我只想要一个通用演员表。
知道如何获取原始列表吗?
只需使用 IEnumerable
而不是 IEnumerable<object>
;尽管 int[]
没有实现 IEnumerable<object>
,但它 确实 实现了 IEnumerable
:
IEnumerable enumerable = myObject as IEnumerable;
if (enumerable != null)
{
foreach (object o in enumerable)
{
// do stuff
}
}
如果您真的想使用对象,请使用 IEnumerable
。但是,如果您需要将对象转换为某种具体类型的 IEnumerable
,您可以使用 Enumerable.Cast<T>
Linq 扩展方法。
Object obj = new int[] { 1, 2, 3, 4 };
IEnumerable collection = obj as IEnumerable;
IEnumerable<int> integers = collection.Cast<int>();
foreach(int i in integers)
System.Console.WriteLine(i);
在我的 C# 程序中,我需要将对象转换为 IEnumerable<object>
。关于那个对象,我只知道它是一个列表 (Type.IsGenericType):
IEnumerable<object> iEnu = myObject as IEnumerable<object>;
if (iEnu != null)
foreach (object o in iEnu)
// do stuff
只要列表的类型不是原始类型,它就可以正常工作,因为所有 类 都继承自对象。但是原始人没有。因此,强制转换为IEnumerable<object>
returns null。如果它是一个整数列表,我需要转换为 IEnumerable<int>
,如果它是一个布尔值列表,则需要转换为 IEnumerable<bool>
,依此类推。当然,我只想要一个通用演员表。
知道如何获取原始列表吗?
只需使用 IEnumerable
而不是 IEnumerable<object>
;尽管 int[]
没有实现 IEnumerable<object>
,但它 确实 实现了 IEnumerable
:
IEnumerable enumerable = myObject as IEnumerable;
if (enumerable != null)
{
foreach (object o in enumerable)
{
// do stuff
}
}
如果您真的想使用对象,请使用 IEnumerable
。但是,如果您需要将对象转换为某种具体类型的 IEnumerable
,您可以使用 Enumerable.Cast<T>
Linq 扩展方法。
Object obj = new int[] { 1, 2, 3, 4 };
IEnumerable collection = obj as IEnumerable;
IEnumerable<int> integers = collection.Cast<int>();
foreach(int i in integers)
System.Console.WriteLine(i);