C#中IList<T>与List<T>的区别深入解析

   2015-09-17 0
核心提示:本篇文章主要是对C#中IList<T>与List<T>的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助

写代码时对:
IList IList11 =new List ();
List List11 =new List ();

有所疑惑,于是在网上搜索一下,很受启发,于是收藏下来,但对部分观点不敢苟同,用红色字体标明我的看法!

首先IList 泛型接口是 ICollection 泛型接口的子代,并且是所有泛型列表的基接口。
它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList可以胜任。
不过,更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序。这个时候IList就爱莫能助了。

1、当你只想使用接口的方法时,ILis<>这种方式比较好.他不获取实现这个接口的类的其他方法和字段,有效的节省空间.(既然子类是继承父类的子类又有自己的属性和方法,那么子类NEW出来后这些都应该有而且必须有的,不论放在父类的变量里面还是自身类型的变量里面,不然的话向上转型后再向下转型数据就会丢失喽,太可怕了!)

2、IList <>是个接口,定义了一些操作方法这些方法要你自己去实现,List <>是泛型类,它已经实现了IList <>定义的那些方法

IList IList11 =new List ();
List List11 =new List ();

这两行代码,从操作上来看,实际上都是创建了一个List对象的实例,也就是说,他们的操作没有区别。
只是用于保存这个操作的返回值变量类型不一样而已。
那么,我们可以这么理解,这两行代码的目的不一样。
List List11 =new List ();
是想创建一个List,而且需要使用到List的功能,进行相关操作。
而IList IList11 =new List ();
只是想创建一个基于接口IList的对象的实例,只是这个接口是由List实现的。所以它只是希望使用到IList接口规定的功能而已

 
标签: List IList C#
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 项目中使用TypeScript的TodoList实例详解
    项目中使用TypeScript的TodoList实例详解
    目录为什么用todolisttodolist的ts化数据到视图实现handleTodoItemreadonly分类交叉类型新增功能联合类型可选属性数据转视图总结为什么用todolist现代的框架教程目前再也不是写个hello world那么简单了,而是需要有一定基础能力能够做到数据绑定、遍历、条件
    03-16
  • Flutter Dart List.map() 获取下标
    class HomePageState extends State{final topTitles = ['审批单', '机票列表', '客服'];final topIcons = ['assets/home/approval.png', 'assets/home/air_ticket.png', 'assets/home/service.png'];@overrideWidget bu
    02-09
  • java并发数据结构之CopyOnWriteArrayList java并发类有哪些
    java并发数据结构之CopyOnWriteArrayList java
    CopyOnWriteArrayList是一个线程安全的List实现,其在对对象进行读操作时,由于对象没有发生改变,因此不需要加锁,反之在对象进行增删等修改操作时,它会先复制一个对象副本,然后对副本进行修改,最后将修改后的副本对象写回,从而保证操作的线程安全,下面
    02-09
  • 教程一:用ASP.NET MVC创建一个TaskList应用程序
    教程一:用ASP.NET MVC创建一个TaskList应用程
    原文地址:http://www.asp.net/learn/mvc/tutorial-01-cs.aspx本篇教程目的是让你了解创建一个ASP.NET程序是“怎么样子的”。在这篇教程里,我会从头到尾快速地创建一整个ASP.NETMVC程序。我会告诉你如何创建一个简单的TaskList程序。如果你跟ASP或者APS.NET
    02-09
  • implement a list using Rust
    Rust果然比較複雜,在經歷了n次compile fail,終于寫成了一個 list難點: 對Rc的用法不熟悉。對borrow checker不夠熟悉有些寫法可能還不是最短的 use std::rc::Rc;fn main() {println!("Hello, world!");let li = ListInternal {data: 1,next: None,};let li
    02-09
  • delphi TStringList 用法详解
    delphi TStringList 用法详解 //TStringList 常用方法与属性 :varList: TStringList;i: Integer;begin List := TStringList.Create;List.Add('Strings1'); {添加}List.Add('Strings2');List.Exchange(0,1); {置换}List.Insert(0,'Strings3');{插入}i := Lis
    02-09
  • Delphi的TListView控件拖放选定行操作
    http://www.tansoo.cn/?p=401Delphi的TListView控件拖放选定行操作的例子,效果图如下:TListView控件拖动选定行到指定位置具体实现步骤:一、新建一个Delphi工程,在窗体上放置一个TListView控件(在Win32面板),设置ListView1的属性:ViewStyle设置为vsRep
    02-09
  • Delphi ListView基本用法大全
    //增加项或列(字段) ListView1.Clear; ListView1.Columns.Clear; ListView1.Columns.Add; ListView1.Columns.Add; ListView1.Columns.Add; ListView1.Columns.Items[0].Caption := apos; idapos; ; ListView1.Columns.Items[1].Caption := apos; typea
    02-09
  • Delphi ListView基本用法大全
    Delphi ListView基本用法大全//增加项或列(字段)ListView1.Clear;ListView1.Columns.Clear;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Items[0].Caption:='id';ListView1.Columns.Items[1].Caption:='type';ListV
    02-09
  • Delphi中ListView和TreeView的Item中的内存泄露
    Delphi中大家在使用 ListView和TreeView时,一般都会使用到Item的Data属性来保存大家自己的内部数据,这个Data的声明如下:property Data: Pointer;大家可以看到它就是一个指针,使用上一般类似如下代码(以ListView为)添加时  PViewItemState = ^TViewItem
    02-09
点击排行