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接口中定义的方法外,还可以调用其自身定义的方法。

 

 

 

posted on 2012-05-07 21:45  Gcam  阅读(424)  评论(0编辑  收藏  举报

导航