缘由:
机房个人重构中添加了泛型以后,IList和List就分不清了。把IList改为List以后,仍然可以正常运行,没有什么区别。在理解IList和List时,对接口再次有了理解。下面先说一下我对接口的再次理解,然后,再介绍IList和List。
接口:
以前虽然做过接口和抽象类的比较,一直在找他们的不同,忘记了他们的相似。这也可能因为自己对抽象类的理解也不深刻。抽象类不允许实例化,同样接口也是;抽象类之所以叫抽象类是因为含有抽象方法,同样接口中的方法是抽象方法;因为是抽象的,所以,不能实例化。
接口是抽象的,只能定义方法,没有方法体;只能通过一个具体的类去实现其中的方法体。
例如:
定义接口,大家可以注意到接口中的方法,没有方法体
<span style="font-size:18px;">Public Interface IUser Function CheckExistsUser(ByVal user As Entity.UserInfoEntity) As IList(Of Entity.UserInfoEntity) End Interface</span>
实现接口,sqlUserDAL类实现接口方法,写出具体方法
<span style="font-size:18px;">Public Class sqlUserDAL : Implements IDAL.IUser Public Function CheckExistsUser(user As UserInfoEntity) As IList(Of UserInfoEntity) Implements IUser.CheckExistsUser '方法体 End Function End Class </span>
用关键字Interface定义接口,通过关键字Implements来实现接口。
IList(Of T)和List(Of T):
IList(Of T) 接口
IList(Of T)表示可按照索引单独访问的一组对象。
IList(Of T) 是泛型接口;是 ICollection(Of T) 泛型接口的子代;并且是所有泛型列表的基接口。
List(Of T) 类
表示可通过索引访问的对象的强类型列表。 提供用于对列表进行搜索、排序和操作的方法。
List(Of T) 类是 ArrayList 类的泛型等效类。 该类使用大小可按需动态增加的数组实现 IList(Of T) 泛型接口。
两者关系:
IList(Of T)是接口,List(Of T)是实现IList(Of
T)接口的泛型类。
IList(Of T)接口定义了一些方法,这些方法要自己去实现。List已经实现了这些方法。
<span style="font-size:18px;">IList(Of T) IList1=New List(Of T)() '创建一个基于接口IList的的队形实例,只是这个接口是由List实现的 List(Of T) List1 =New List(Of T)() '创建一个List,而且需要使用List的功能进行相关操作</span>
这两句都是实例化了List(Of
T),也就说他们的操作是没有区别;只是用于保存这个操作的返回类型不同而已;
感受:自己学习时有点粗枝大叶,一些基本知识都理解的不是很清楚。这次通过对IList(Of T)和List(Of T)的理解时,体会到一点,假如之前我对接口理解的再深刻一点的话,这次对IList(Of T)和List(Of T)的理解就会清楚很多。