浅析IList与List的区别

2023-11-08

List和IList是.net开发中经常遇到的两种类型,用法上经常会让初学者摸不到头脑,下面简要的分析一下这两种类型的区别

1、IList<T>是接口,继承自ICollection<T>和IEnumerable<T>,是所有泛型列表的基接口,其中规定了一些方法声明。

     List继承了IList并实现了IList规定的那些方法,同时也实现了许多自定义的新方法。

2、既然IList是接口,就不能用new关键字去直接实例化,但是可以用多态的方式去实例化,也就是用其子类(List)去实例化。

     IList<string> Ilist1=new List<string>()    (简记作①)

     你可能会有疑问,这样作与 List<string> list1=new List<string>()   (简记作②)     有什么区别呢?

     当然是有区别的:

      首先,①创建了一个list,但是这个list只能用到IList接口中规定那些方法,因为这些方法在List类型中实现了的,所以可以用。

               ②也创建了一个list,这个list可以用List类型中实现的所有方法(当然包括IList规定的那些)

      其次,推荐使用哪个呢? 答:①

               因为在面向对象的思想里,推荐使用接口,可以实现松耦合,有很好的扩展性,功能与具体实现很好的分离开,有利于系统的维护与重构。

 

 

转载于:https://www.cnblogs.com/cnki/p/5147960.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅析IList与List的区别 的相关文章

  • 数据预处理之缺失值

    目录 0 前言 1 缺失值的识别 1 1 每个数据的识别 isnull 1 2 每列 行是否包含缺失值 isnull any isnull all 1 3 缺失值的个数 isnull sum 1 4 检查所有的数据 data info 1
  • C++ 泛型编程(四) 类模板

    前文回顾 C 泛型编程 一 基本概念 C 泛型编程 二 函数模版 C 泛型编程 三 模版实参推断 类模版 定义 定义 类模版是用来生成类的蓝图的 类似函数模版的定义 类模板以关键字 template 开始 后跟尖括号包围的模版参数列表 用关
  • jQuery仿QQ空间图片查看特效(全屏,放大,缩小,旋转,镜像,鼠标滚轮缩放)...

    地址 http www tuicool com articles 2YRVr2a 可以通过nmp或bower来安装该图片查看器插件 npm install imageviewer bower install imageviewer 复制代码
  • 关于kafka——幂等性

    怎么保证幂等性 幂等性 通俗点说 就一个数据 或者一个请求 给你重复来多次 你得确保对应的数据是不会改变的 不能出错 从业务层面考虑 比如你拿个数据要写库 你先根据主键查一下 如果这数据都有了 你就别插入了 update 一下好吧 比如你是
  • 服务器系统盘预留空间,固态硬盘的系统盘需要预留多空间?固态硬盘适不适合分区...

    固态硬盘的对于电脑的提速显而易见 再加少价格降成了萝卜价 所以固态硬盘成为绝大多数人的标配 对于固态硬盘的使用人们也是众说一词 有的人认为固态硬盘不宜多分区 会影响速度 有的人认为固态硬盘和机械硬盘的使用一样 没什么区别 关于这条 我们额外
  • vue 全局过滤器 时间格式 转换

    vue 项目要求将时间戳转成规定的时间格式 可以借助 moment js 完成 现要确定自己的数据是时间戳 安装命令 npm install moment save main js import moment from moment 设置过
  • Oracle日期格式yyyymmdd格式化为yyyy-mm-dd

    问题 日期展示为20200828需要展示为2020 08 28 解决 select TO CHAR TO DATE 20200828 yyyyMMdd YYYY MM DD FKDAT from dual 结果展示 2020 08 28
  • Docker安装Nginx+FTP访问静态资源

    1 拉取Nginx镜像 docker pull nginx latest 2 创建挂载目录 mkdir p server nginx conf mkdir p server nginx log mkdir p server nginx ht
  • 安装Ubuntu的注意事项

    安装win10 Ubuntu elemengtory OS直接进入win10而不出现linnux引导的问题 1 进入BIOS 启动UEFI 关闭Security 2 分区时应该注意的事项 1 swap 2000MB 主分区引导 起始 2 E
  • Pandas 缺失号

    三种缺失符号及其对比 pandas 1 0之前 三种记号 pandas 1 0 np nan None np NaT 时间序列用 类型 float64 Nonetype pandas libs tslibs nattype NaTType
  • mybatis 拼接动态表名、字段名

    转载地址 https blog csdn net xiaoxiangzi520 article details 76719098 今天在项目中遇到个需求是要动态的根据前台传入的字段名称和升降序条件在mybatis里动态拼接sql语句进行查询
  • Java类成员变量的默认值

    1 布尔型 boolean 变量默认值为false byte short int long为0 字符型为 u0000 空字符 浮点型 float double 为0 0 引用类型 String 为null package cn nxl201
  • shell算数运算

    i j k 等价于 i expr j k i j k 等价于 i expr j k i j k 等价于 i expr j k i j k 等价于 i expr j k Let expressions 执行一个或多个表达式 表达式中的变量前不
  • 量化投资学习-15:散户与庄家共赢策略之价值长线策略

    散户的尴尬 在前面的文章 量化投资学习 13 一张图残酷的展现了庄家 量化交易者 散户的盈利空间的对比 中分析过 如果散户追求短期利益 采用短期炒作的操作策略 实际的利润空间非常狭小 只能是尾部或头部空间 稍不留神 就会导致亏损 化解尴尬的
  • 微信小程序接入微信支付(四):接收支付结果通知与沙箱测试

    代码主体写完后 还有不可或缺的部分需要补充完整 即接收支付结果通知 官方文档 https pay weixin qq com wiki doc api wxa wxa api php chapter 9 7 index 8 目录 微信小程序
  • 线程的基本概念,线程的同步互斥机制

    一 线程的概念 1 1 什么是线程 线程 线程是进程的一个实体 是被系统独立调度和分派的基本单位 是一个进程并发执行多个任务的机制 并发 单核CPU多任务同时运行 CPU以ms级进行进程调度 1 2 为什么引入线程 进程间的切换表现为上下文
  • 计算机设备显示感叹号,设备管理器有感叹号和问号未知设备的解决方法

    设备管理器有感叹号和问号未知设备怎么办 因为在Windows操作系统中 设备管理器是管理计算机硬件设备的工具 我们可以借助设备管理器查看计算机中所安装的硬件设备 设置设备属性 安装或更新驱动程序 停用或卸载设备 可以说是功能非常强大 但有时
  • VC 如何使程序运行后自己删除自己

    VC 如何使程序运行后自己删除自己 有时候 我们需要创建一个运行后能够自己删除自己的可执行程序即自删除程序 很明显如果一个进程通过直接调用DeleteFile 来删除自己是不可能的 必须另想办法 经过本人在网上参考很多资料后实际测试并集众家
  • Onnxruntime-CUDA版本对应

    ONNX Runtime CUDA cuDNN 1 14 1 13 1 1 13 11 6 8 2 4 Linux 8 5 0 96 Windows 1 12 1 11 11 4 8 2 4 Linux 8 2 2 26 Windows 1
  • Flink源码-SlidingProcessTimeWindow的创建和触发

    今天研究了下SlidingProcessTimeWindow的源码 把TimeWindow的生成和触发计算 大致搞清楚了 写一篇博客记录下 要点 这里讲的是ProcessTime的滑动窗口 每条数据都会触发窗口的分配 创建 一条数据可能分配

随机推荐

  • 基于鲸鱼算法优化支持向量机SVM的分类预测,基于WOA-SVM的光谱分类

    目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 鲸鱼算法的原理及步骤 SVM应用实例 基于鲸鱼算法改进SVM的光谱分类 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机 support vector m
  • 【qt】error: C2248: “QVariant::QVariant”: 无法访问 private 成员(在“QVari

    错误信息 main A a new A engine rootContext gt setContextProperty a a C2248 QVariant QVariant 无法访问 private 成员 在 QVariant 类中声明
  • Unity发布WebGL如何把文件下载到本地——后续,详细实现。

    Unity发布WebGL如何把文件下载到本地 后续 详细实现 前言 一 编写jslib 二 引入dll 编写C 脚本 三 最终效果 总结 版权声明 前言 以前的问题https blog csdn net Wrinkle2017 articl
  • 10.28 云计算

    课上实验实训1 获取令牌 生效环境变量 source etc keystone admin openrc sh 验证令牌 openstack role list 查看角色列表 openstack user list 查看用户列表 opens
  • Elasticsearch 基础 DSL 命令

    Elasticsearch 基础 DSL 命令 1 模拟请求 2 分词器相关 3 索引库相关 4 文档相关 5 查询相关 6 GEO 查询 7 组合查询 8 得分加权 9 排序 10 分页 11 高亮 Elasticsearch 官方文档
  • vue上传excel文件

  • NLP语言学基础

    不同的自然语言有不同的语法结构 因此需要对语言数据进行语法解析 才能让机器更准确地学到相应的模式 儿语言不同于图像 数据标注工作需要有一定的语言学知识 因此数据的整理也相对更困难 下面以英语为例 别的咱也看不懂 对NLP研究中常见的基本语言
  • mysql运行效率最高的是memory_MySQL数据库的性能的影响分析及其优化

    MySQL数据库的性能的影响分析及其优化 MySQL数据库的性能的影响 一 服务器的硬件的限制 二 服务器所使用的操作系统 三 服务器的所配置的参数设置不同 四 数据库存储引擎的选择 五 数据库的参数配置的不同 六 重点 数据库的结构的设计
  • Android多窗口模式(分屏模式)

    Android N 支持多窗口模式 或者叫分屏模式 即在屏幕上可以同时显示多个窗口 在手机模式下 两个应用可以并排或者上下同时显示 如图 1 所示 屏幕上半部分的窗口是系统的 CLOCK 应用 下半部分是系统设置功能 用户可以拖动两个应用之
  • Chrome浏览器崩溃“STATUS_INVALID_IMAGE_HASH”的解决方法

    原文地址 Chrome浏览器崩溃 STATUS INVALID IMAGE HASH 的解决方法 JUNE S BLOG 六月博客 今天无意间 发现Chrome浏览器多了个 由贵单位管理 的提示 出于安全的考虑 想立马把它搞掉 百度了一堆方
  • 使用TextInputLayout创建一个登陆界面(j界面很漂亮)

    http www jcodecraeer com a basictutorial 2015 0821 3338 html
  • xss、csrf、ssrf的区别

    要想搞懂这三者有什么区别 首先需要知道它们的原理 xss 原理 跨站脚本攻击 攻击分类造成危害为 存储型 gt 反射型 gt DOM型 与SQL注入差不多 SQL注入漏洞是WEB应用程序未对用户输入的参数严格的过滤 导致被攻击者恶意拼接SQ
  • React中使用SVG文件显示成图片

    SVG 没法直接渲染都img 一般引用插件 方案一 使用 create react app脚手架 创建react项目 方案二 file loader 插件 SVG文件优缺点 优点 不失真 放大缩小图像都很清晰 SVG文件是纯粹的XML 也是
  • 'mvn-v' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    当我下载安装好maven 想通过测试出现看是否配置成功的时候 出现了问题 如下 如何解决 首先我的JDK是没有问题的 就是我的java程序编译都是可以的 那么就应该是配置maven的时候出现了问题 正确的参数的配置如下 1 新建变量 我这里
  • 什么是信号和槽?纯C++中如何实现信号和槽?

    什么是信号和槽 在Qt框架中 信号和槽是一种非常灵活的机制 用于在对象之间进行通信 信号和槽可以将两个对象解耦并连接起来 从而使得一个对象发生变化时 另一个对象就能够接收到相应的通知 并执行相关的操作 例如 在编写一个GUI程序时 我们可以
  • python机器人编程——用python实现一个写字机器人

    目录 一 前言 二 整体框架 2 1 系统构成 2 2 硬件介绍 2 2 1主要组成部分 2 2 2机械结构 2 2 3驱动及控制主板 PS电机驱动原理简介 2 2 4其余部分 2 3 机器人python程序框架 2 3 1通信服务模块 2
  • 【Java编程】JavaSE基础总结(五):I/O

    JavaSE基础总结 五 关于 I O 肯定会涉及到操作系统和计算机组成原理相关的知识 I O 简而言之 就是输入输出 那么为什么会有 I O 呢 其实 I O 无时无刻都在我们的身边 比如 读取硬盘上的文件 网络文件传输 鼠标键盘输入 也
  • 七、函数与类——Qt快速入门、三点求圆心实现详解

    在编程中 会经常用到数学计算 所以C 将常用的数学计算 例如求正余弦等 封装成函数 正是我们在3 2 数学计算中学习到的 我们只需要写入简单的语句就可以执行所需要的功能 这正是函数的意义 在这一章的学习 我们会建立起模块化的思维 小的功能模
  • nfs服务器哪个版本稳定,NFS V3与各个版本间的比较

    NFS协议大家应该都知道 随着网络的不断发函 目前已经有了不少版本 今天我们主要讲解一下NFS的基础知识 以及它们版本间的一些对比 包括NFS V2 rfc1094 NFS V3 rfc1813 NFS V4 一 NFS简介 NFS Net
  • 浅析IList与List的区别

    List和IList是 net开发中经常遇到的两种类型 用法上经常会让初学者摸不到头脑 下面简要的分析一下这两种类型的区别 1 IList