IList<T>仅仅是所有泛型类型的接口,并没有太多方法可以用,如果仅仅是作为集合数据的承载体,那么IList<T>可以胜任。但是更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序。这个时候IList<T>就爱莫能助了。 |
|
转换不了,至少不一定能转换,比如
class MyClass<T> : Ilist<T> { … } 你能把MyClass<T>转换成List<T>么? 当然,Linq为IEnumerable<T>实现了List<T> ToList()扩展方法 你可以用 mylist.ToList() 去“转换”,但是这其实是创建了一个新的List,并且复制了元素。 |
|
IList<T> ilist=newList<T>();
|
|
IList<T> ilist=new List<T>(); |
|
20分 |
IList<int> s=…
var b= s as List<int> ?? new List<int>(s); |
IList<T> ilist=new List<T>();
|
|
别考虑转换了,在需要处理数据的时候,ToList()吧。。。。
|
|
5分 |
public List<T> IListToList<T>(IList<T> list) { T [] array = new T[list.Count]; list.CopyTo(array,0); return new List<T>(array); } |
你那还是转换么?不就是IList<T>.ToList()么。。。。 |
|
4楼神人啊,看样子随手写的都没经过测试
我测试2种都通过了 就是不知道效率怎么样 |
|
5分 |
脱裤子放屁,典型的。使用C#在没有特殊需求的情况下重复造轮子的行为是可耻的。 首先 |
wddw1986 莫要人身攻击啊
不过你说的我看不大懂 你是说IEnumerable的扩展方法能直接转的吗? List<T>的构造函数能说详细些吗 |
|
5分 |
List<T> list=(List<T>)ilist; |
难道是List<T> b = new List<T>(IList);
|
|
简单点说,IList<T>直接转换为List<T>可以不用考虑。 |
|
5分 |
不好意思
2、new List<T>(IList<T>) |
话说我没找到IList<T>.ToList(),是因为没有加载哪个引用么? |
|
用循环,使用扩展方法,把IList转换成List<T>
public static class Extension//必须先声明一个静态类,类名随意 使用时 |
|
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable IList<T>继承了IEnumerable,明显可以使用Linq查询,怎么会没太多方法可用。 if(list is IList<T>){return (List<T>)list;} 如果返回的IList<T>就是List<T>类型,直接强制转换即可,如果不是,那根本就不存在转换,只能构造一个List<T>类型返回。 |