日期:2014-05-18  浏览次数:20753 次

List<T> 中的T能否动态生成
请问 List<T>中的T是不是一定要指明一种特定的类型 
比如 List<string> List<int>

我遇到的问题是,需要用到List容器,但是类型可能得到运行时才能确定,比如运行时才通过参数知道需要用到的是string或是int类型的List容器
难道要用List<object> 来做转换?

------解决方案--------------------
修正代码,有问题的话继续讨论
C# code
        static void Main()
        {
            object intList = MakeList(typeof(int), 1, 2, 3);
            object strList = MakeList(typeof(string), "sdfd", "fet");

            //List<int>
            foreach(object obj in (System.Collections.IEnumerable)intList)
                Console.WriteLine(obj);

            //List<string>
            foreach(object obj in (System.Collections.IEnumerable)strList)
                Console.WriteLine(obj);
        }

        static object MakeList(Type t, params object[] items)
        {
            Type type = typeof(List<>).MakeGenericType(t);

            object list = Activator.CreateInstance(type);
            System.Collections.IList ilist = list as System.Collections.IList;
            foreach (object o in items)
                ilist.Add(o);
            return list;
        }