C#中Ilist与list的区别小结

常见问题:

Ilist <> 本身只是一个泛型接口, 既然是接口当然不能实例化,只能用如下方法
IList <Class1> IList11 =new List <Class1>();
但是为什么要这么用呢,为什么不直接用List:
List <Class1> List11 =new List <Class1>();

第一种用法有什么好处。

总结归纳一下:

Ilist <> 是在 .net2.0里面才支持的

好处嘛..比如说human和tiger都有行走的功能,你可以把这些归类到interface中,当你有一个动物的类包括有这两种动物时,你想让他们行走你只需要调一个同样的方法而不管对方是什么类型,具体的行走嘛,人有两个只脚,但有4肢,动物有4条腿,这就是到具体的动物类来实现了,但是他们行走时都是4肢摆动,而且都向前迈出一定的距离(当然是向前走时),所以我认为这些可以归类为行为抽象,具体的一步能迈出多远这依赖于每个具体实现的身高/体长.

使用IList <Class1> IList11 =new List <Class1>();
方便后期的修改,当你不在使用List 要使用其他类型的时候
只需要修改这一处地方就可以了
不用修改过多的 地方

IList <>是个接口,定义了一些操作方法 这些方法要你自己去实现

List <>是个类型  已经实现了IList <>定义的那些方法

List <Class1> List11 =new List <Class1>();
是想创建一个List <Class1>,而且需要使用到List <T>的功能,进行相关操作。

IList <Class1> IList11 =new List <Class1>();

只是想创建一个基于接口IList <Class1>的对象的实例,只是这个接口是由List <T>实现的。所以它只是希望使用到IList <T>接口规定的功能而已。

接口实现松耦合...有利于系统的维护与重构...优化系统流程...

鼓励使用接口
这样可以实现功能和具体实现的分离
实现接口分离的原则
不是看实际需要用的!

(0)

相关推荐

  • C#遍历List并删除某个元素的方法

    本文实例分析了C#遍历List并删除某个元素的方法.分享给大家供大家参考.具体如下: 1.我们选择用for循环: for(int i=0;i<list.count;i++) { if(list[i]) { list.RemoveAt(i); } } 如果这样循环,肯定不对, {A B C D E F G H}  假设当前遍历到D(i=3),移除,接着遍历i=4(F), 此时跳过了E(i=3) 2.我们使用倒序遍历,这个问题就解决了 for(int i=list.Count-1;i>=0;i--

  • C# 写入XML文档三种方法详细介绍

    我在以前的博客中介绍了如何使用XmlDocument类对XML进行操作,以及如何使用LINQ to XML对XML进行操作.它们分别使用了XmlDocument类和XDocument类.在本文中,我再介绍一个类,XmlTextWriter.我们分别用这三个类将同样的xml内容写入文档,看一看哪种写法最直观.简便. 我们要写入的XML文档内容为 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8"?> <Co

  • C# 操作XML文档 使用XmlDocument类方法

    W3C制定了XML DOM标准.很多编程语言中多提供了支持W3C XML DOM标准的API.我在之前的文章中介绍过如何使用Javascript对XML文档进行加载与查询.在本文中,我来介绍一下.Net中的XmlDocument类.它支持并扩展了W3C XML DOM标准.它将整个XML文档都先装载进内存中,然后再对XML文档进行操作,所以如果XML文档内容过大,不建议使用XmlDocument类,因为会消耗过多内存.对于很大的XML文档,可以使用XmlReader类来读取.因为XmlReade

  • C# List<T>的用法小结

    所属命名空间:System.Collections.Generic     public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable List<T>类是 ArrayList 类的泛型等效类.该类使用大小可按需动态增加的数组实现 IList<T> 泛型接口. 泛型的好处: 它为使用c#语言编写面向对象程

  • c#对list排序示例

    复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ListSort { class Program { static void Main(string[] args) { List listCustomer = new List(); listCustomer.Add(new Customer { name = "客户1",

  • C#对XML文件的各种操作实现方法

    XML:Extensible Markup Language(可扩展标记语言)的缩写,是用来定义其它语言的一种元语言,其前身是SGML(Standard Generalized Markup Language,标准通用标记语言).它没有标签集(tag set),也没有语法规则(grammatical rule),但是它有句法规则(syntax rule).任何XML文档对任何类型的应用以及正确的解析都必须是良构的(well-formed),即每一个打开的标签都必须有匹配的结束标签,不得含有次序颠

  • C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)第1/2页

    已知有一个XML文件(bookstore.xml)如下: Corets, Eva 5.95 1.插入节点 往节点中插入一个节点: 复制代码 代码如下: XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load("bookstore.xml"); XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找 XmlElement xe1=xmlDoc.CreateElement(

  • 简介C#读取XML的两种方式

    XML作用 对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企业可以制定一套自己的数据格式.用于Internet的数据传输,我想,这是XML对于我们这些程序员最诱人的地方! 我们今天的主题不是论述XML的好处,而是讨论在C#中如何使用XML.下面我们来了解一下使用程序访问XML的一些基础理论知识. 访问的两种模型: 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,

  • C#将DataTable转换成list的方法

    本文实例讲述了C#将DataTable转换成list及数据分页的方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: /// <summary>   /// 酒店评论列表-分页  /// </summary>  /// <param name="userId"></param>  /// <param name="pageIndex">当前页</param>  /// <param

  • C#实现导出List数据到xml文件的方法【附demo源码下载】

    本文实例讲述了C#实现导出List数据到xml文件的方法.分享给大家供大家参考,具体如下: C#导出List数据到xml文件,这里主要用到的是: XmlSerializer 类 (System.Xml.Serialization) 将对象序列化到 XML 文档中和从 XML 文档中反序列化对象.XmlSerializer 使您得以控制如何将对象编码到 XML 中. 实体类代码: /// <summary> /// 用户实体类 /// /// 注意:类的访问修饰符必须是:public,否则会出现

  • C#对象与XMl文件之间的相互转换

    C#提供三种序列化方式,分别为:1.是使用BinaryFormatter进行串行化: 2.使用SoapFormatter进行串行化: 3.使用XmlSerializer进行串行化.其中对于BinaryFormatter的方式需要实现ISerializable接口,而XmlSeriializ不需要实现对应的接口,可以直接序列化.在这里面我们主要采用XMlSerialize来实现对应的序列化操作进而实现对应的对象和XMl文件之间的转换关系. 在通过序列化实现对应的转换关系操作的功能时,我首先创建了D

随机推荐