如何在不知道类型的情况下枚举通用List <T>

Pri*_*n R 0 c#

我将通用列表传递给函数,我想枚举列表中的对象.如果我能够枚举列表中的项目,我将使用反射到其余部分.

 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)

Dav*_*res 9

我不确定你的最终目标是什么.如果您期望列表,特别是通用列表,为什么不使用泛型方法,如:

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在上面和上面迭代项目的意图.


Adr*_*der 7

您可以使您的功能通用

public void Enum<T>(List<T> list)
        {
            foreach (T t in list)
            {

            }
        }
Run Code Online (Sandbox Code Playgroud)