同题~

解决方案 »

  1.   


    private List<T> Convert(System.Collections.IList listObjects)
    {
        List<T> convertedList = new List<T>();    foreach (object listObject in listObjects)
        {
            convertedList.Add((T)listObject);
        }    return convertedList;
    }
      

  2.   

    首先,直接强制转换很可能会异常,毕竟不止List实现了这个接口然后,一楼的办法是最初级的,很没必要。我的解答是。IList<T> inter;
    List<T> result = new List<T>(inter);
      

  3.   

    IList<T> input;List<T> output = new List<T>(input);
      

  4.   

    我用了您的方法:
    List<T> output = new List<T>(q.List());
    return output;可是报错,说没有List<T>(System.Collections.IList list)这个方法:
    Error 2 The best overloaded method match for 'System.Collections.Generic.List<T>.List(int)' has some invalid arguments
    Error 3 Argument '1': cannot convert from 'System.Collections.IList' to 'int'
      

  5.   

    很明显,你的代码中,q.List() 是IList类型,而不是IList<T>类型,所以你必须先将q.List()强制转换成IList<T>,或者将q.List()转换成ArrayList了:ArrayList output = new ArrayList(q.List());
    return output;
      

  6.   


    可能q.List()返回的是System.Collections.IList, 而不是泛型的System.Collections.Generic.IList<T>
    你可以这样    //System.Collections.IList list = new int[]{1,2,3,4};
        System.Collections.ArrayList result = new System.Collections.ArrayList(list);        //<--
    或者,如果知道IList元素的类型T,则可以创建一个System.Collections.Generic.List<T>,然后转化并添加Ilist的元素。
      

  7.   


    /**//// <summary>
        /// 转换IList<T>为List<T>
        /// </summary>
        /// <typeparam name="T">指定的集合中泛型的类型</typeparam>
        /// <param name="gbList">需要转换的IList</param>
        /// <returns></returns>
        public static List<T> ConvertIListToList<T>(IList gbList) where T : class
        {
            if (gbList != null && gbList.Count > 1)
            {
                List<T> list = new List<T>();
                for (int i = 0; i < gbList.Count; i++)
                {
                    T temp = gbList[i] as T;
                    if (temp != null)
                        list.Add(temp);
                }
                return list;
            }
            return null;
        }
      

  8.   

    直接IList<T> iList;
    List<T> list = iList.ToList();
      

  9.   

    很明显一个多态嘛!Ilist<>为接口,直接用list<>去实现啦!code如下:
    Ilist<T> iList = new  list<T>();