我将通用列表传递给函数,我想枚举列表中的对象.如果我能够枚举列表中的项目,我将使用反射到其余部分.
var Items= new List<String>(){"s1","s2"};
Enumerate(Items);
void Enumerate(object items)
{
//i know the type so i can cast and enumerate
foreach(var item in (List<String>) items)
{
}
// i don't know the type of object in the list
//Following won't work , can't cast to List<object>
foreach (var item in (List<object>) items)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定你的最终目标是什么.如果您期望列表,特别是通用列表,为什么不使用泛型方法,如:
void Enumerate<T>(List<T> items)
{
for(var item in items)
{
//...
}
}
Run Code Online (Sandbox Code Playgroud)
这在http://msdn.microsoft.com/en-us/library/twcad0zb(VS.80).aspx中有更详细的描述.
我只是想补充一点,上面的方法本身就违背了for循环的简单目的.同样,我不知道Enumerate在上面和上面迭代项目的意图.
您可以使您的功能通用
public void Enum<T>(List<T> list)
{
foreach (T t in list)
{
}
}
Run Code Online (Sandbox Code Playgroud)