IList与List区别
在写后台程序时,用的比较多的是IList<T>和List<T>, 各自声明如下:
这里用String类举例,
(1)IList<String> IList = new List<String>();
(2)List<String> List = new List<String>();
初次使用,感觉上好像(1)(2)差不多,对它们的差别很模糊,有点困惑,后上网查相关资料以及自己在VS2010下调试,小结如下:
1. IList是泛型接口,其在数据元中的声明如下
public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
{
//...
}
2.List是一个泛型类,它实现了接口IList<T>,其在数据元中的声明如下
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
{
//...
}
3. 到这里应该可以较容易的看出,
IList<String> IList = new List<String>();
是定义一个IList<String>接口类型变量,且这个接口是由List类来实现的,
而 List<String> List = new List<String>();
是定义一个List<String>的泛型类变量,跟声明一个普通类class没多大区别,
好像还是不是很清楚具体区别在哪,在VS2010智能感知下就清楚了,你会发现变量IList只能调用接口IList中定义的方法以及接口IList从继承链上方继承来的方法,变量IList无法调用List类中的方法;
而变量List除了能调用IList接口中定义的方法外,还可以调用其自身定义的方法。