IList和List解惑

缘由

机房个人重构中添加了泛型以后,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)的理解就会清楚很多。

时间: 2024-10-26 23:35:59

IList和List解惑的相关文章

C/S总结

学习完了C/S这个大阶段,都不知道自己是怎么走过来,现在,回头看一下,感觉自己也挺有收获的,下面我主要是把我所写的博客总结了一下. 软件工程主要的内容集中在软件设计的步骤上: 计划(项目开发计划) 需求分析(软件需求) 设计(概要.详细.数据库) 编码 测试(测试计划.测试分析) 运行和维护 文档:开发前需准备好:项目可行性项目.项目开发计划.软件需求分析说明书.概要设计.详细设计.数据要求说明.数据库设计: 开发中:项目开发进度月报.项目开发总结报告: 开发后:测试计划说明书.测试分析分析说明

【java解惑】前缀自增自减和后缀自增自减问题

    如下代码: public class Example025 { public static void main(String[] args) { int ape = 100; int it = 100; int ape_it = 100; for (int i = 0; i < 100; i++) { ape--; it = it--; ape_it = --ape_it; } System.out.println("ape = " + ape); System.out.

解惑:NFC手机如何轻松读取银行卡信息?

自支付宝钱包8.0推出了NFC新功能,只要将支持NFC功能的手机靠近公交卡.银行卡等带有芯片的IC卡上,可迅速读取卡内余额.卡的信息,还可以给卡进行充值,非常贴心实用. 但是很多网友表示担忧,要是别人用手机紧贴着我的银行卡,那么信息不就轻易泄露了,这样会威胁我的资金安全吗?并有不少伪专家宣称,NFC手机有可能成为黑客的"提款机",可以实现转账操作,风险很大,网友表示很担心.真实情况是什么样的呢?让我从专业的角度,给大家道出内幕. NFC(近场通信,NearFieldCommunicat

Entity Framework中IQueryable, IEnumerable, IList的区别

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 使用工具追踪EF生成的SQL 使用Entity Framework等ORM框架的时候,SQL对于使用者来说是透明的,往往很多人也不关心ORM所生成的SQL,然而系统出现性能问题的时候就必须关注生成的SQL以发现问题所在. 使用过Toplink的

基础知识系列?IList ←vs→ List

原文地址→http://www.cnblogs.com/zbphot/archive/2011/11/04/2235933.html 1 IList接口→表示可按照索引单独访问的对象的非泛型集合. 1 IList 泛型接口是 ICollection 接口的子代,并且是所有非泛型列表的基接口. 2 IList 实现有三种类别:只读.固定大小.可变大小.无法修改只读 IList. 3 固定大小的 IList 不允许添加或移除元素,但允许修改现有元素. 4 可变大小的 IList 允许添加.移除和修改

C#学习单向链表和接口 IList&lt;T&gt;

作者:乌龙哈里 时间:2015-11-04 平台:Window7 64bit,Visual Studio Community 2015 参考: MSDN 索引器(C# 编程指南) <数据结构(C#语言版)>下载 When to use IEnumerable, ICollection, IList and List 章节: 单向链表元素 定义单向链表操作接口 逐步实现单向链表 正文: 前面学习了 IEnumerable<T>.IComparable<T>.ICollec

[转载]Python 包管理工具解惑

原文链接:http://zengrong.net/post/2169.htm Python 包管理工具解惑 python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到相当疑惑(嗯,是困惑).主要表现在下面几个方面: 这几个包管理工具有什么不同? distutils setuptools distribute disutils2 distlib pip 什么时候该用pip,什么时候该用 setup.py ,它们有关系么? easy_install.ez_setup

Java动态绑定机制的内幕解惑

在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding)和动态绑定机制(auto binding). ★ 静态绑定机制 Java代码   //被调用的类 package hr.test; class Father{ public static void f1(){ System.out.println("Father- f1()"); } } //调用静态方法 impor

NetworkComms V3 使用TCP通信传递IList&lt;T&gt;类型的数据

客户端从服务器获取一组IList<T>类型的数据非常常见(通常从数据库中获取) 我们用NeworkComms V3来演示一下(NetworkcommsV2.x版本也同样支持) [ 使用protobuf.net序列化器] 第一步创建相关的工程文件: MessageContract中的 User类为契约类,使用protobuf.net进行序列化 写法如下: using System; using System.Collections.Generic; using System.Text; usin