using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace List
{public class Users  //类Users  用户{public string Name; //  姓名public int Age;  //  年龄public Users(string _Name, int _Age){Name = _Name;Age = _Age;}}class Program{static void Main(string[] args){Users U = new Users("jiang", 24);IList<Users> UILists = new List<Users>(); //千万要注意:等式的右边是List<Users>,而不是 IList<Users>,
//如果在List前面加一个I, 就会出现错误:抽象类或接口无法创建实例。UILists.Add(U);U = new Users("wang", 22);UILists.Add(U);List<Users> I = ConvertIListToList<Users>(UILists);Console.WriteLine(I[0].Name);Console.WriteLine(I[1].Name);Console.Read();}// ** <summary>/// 转换IList<T>为List<T>      //将IList接口泛型转为List泛型类型/// </summary>/// <typeparam name="T">指定的集合中泛型的类型</typeparam>/// <param name="gbList">需要转换的IList</param>/// <returns></returns>public static List<T> ConvertIListToList<T>(IList<T> gbList) where T : class   //静态方法,泛型转换,{if (gbList != null && gbList.Count >= 1){List<T> list = new List<T>();for (int i = 0; i < gbList.Count; i++)  //将IList中的元素复制到List中{T temp = gbList[i] as T;if (temp != null)list.Add(temp);}return list;}return null;}}
}

注意:

IList<Users> UILists = new List<Users>();  //千万要注意:等式的右边是List<Users>,

而不是 IList<Users>,如果在List前面加一个I, 就会出现错误:抽象类或接口无法创建实例。

下面说一下IList与List的区别:

(1)首先IList 泛型接口是 ICollection 泛型接口的子代,并且是所有泛型列表的基接口。

它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList<T>可以胜任。

不过,更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序。这个时候IList<T>就爱莫能助了。

1、当你只想使用接口的方法时,ILis<>这种方式比较好.他不获取实现这个接口的类的其他方法和字段,有效的节省空间.

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

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

这两行代码,从操作上来看,实际上都是创建了一个List<Class1>对象的实例,也就是说,他们的操作没有区别。

只是用于保存这个操作的返回值变量类型不一样而已。

那么,我们可以这么理解,这两行代码的目的不一样。
List <Class1> List11 =new List <Class1>();
是想创建一个List<Class1>,而且需要使用到List<T>的功能,进行相关操作。

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

原文看这里》》》

转载于:https://www.cnblogs.com/asdyzh/p/9742041.html

【转】ListT和ILIstT的区别相关推荐

  1. Entity Framework中使用IEnumerableT、IQueryableT及IListT的区别

    1. IEnumerable<T> IEnumerable<T> :对于在内存中集合上运行的方法,返回的可枚举对象将捕获传递到方法的参数.在枚举该对象时,将使用查询运算符的逻辑 ...

  2. IListT和ListT区别

    写代码时对: IList IList11 =new List (); List List11 =new List (); 有所疑惑,于是在网上搜索一下,很受启发,于是收藏下来,但对部分观点不敢苟同,用 ...

  3. C#中IListT与ListT的区别感想

    写代码时对: IList IList11 =new List (); List List11 =new List (); 有所疑惑,于是在网上搜索一下,很受启发,于是收藏下来,但对部分观点不敢苟同,用 ...

  4. [C#]泛型与非泛型集合类的区别及使用例程,包括ArrayList,Hashtable,ListT,DictionaryTkey,Tvalue,SortedListTkey,Tvalue,...

    今天有空正好把泛型和非泛型集合类写了一个比较,并做了个的例程,可以比较清楚的理解它们概念和使用方法. 泛型与非泛型集合类在C#程序中是非常重要的一个基础概念,这里列一个表来进行对比: 非泛型集合类 泛 ...

  5. ListT中,Remove和RemoveAt区别

    Remove删除的是匹配的第一项.比如你的list里面有2个相同的项.那么就删除第一个.后面的不删除,找不到元素和删除失败都返回false RemoveAt是删除索引下的项 转载于:https://w ...

  6. ilistT 与listT 之间的相互转换

    ilist<T> 与list<T> 之间的相互转换 1>  将list<T>转化为ilist<T> 代码 #region 转化list为ilist ...

  7. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  8. C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别

    最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...

  9. gcc 和 g++ 的联系和区别,使用 gcc 编译 c++

    GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...

最新文章

  1. SAP MM ME1M报表结果不科学?
  2. 集合之四:List接口
  3. Hdu 2522 hash
  4. POJ2976——Dropping tests(0/1分数规划)
  5. 环境变量_UG环境变量设置
  6. vue 修改favicon
  7. java程序设计复习题_java程序设计复习大全(100题及答案).doc
  8. 8086汇编-实验5(微调)-用栈实现数据交换位置
  9. mysql 排序速度_MySQL排序速度慢而且可能不稳定
  10. 正则表达式 匹配标签里面的值 eg:image input
  11. 【白皮书分享】2021内容营销白皮书.pdf(附下载链接)
  12. python na不显示 占位_Python学习之路—Python基础(一)
  13. 读Pyqt4教程,带你入门Pyqt4 _007
  14. redis中key的归类
  15. 《应用时间序列分析:R软件陪同》——1.4 本书的内容
  16. 人脸聚类Learning to Cluster Faces(翻译)
  17. 计算机毕业设计选题建议
  18. c++ string 易语言,如何把C++变成易语言
  19. Ajax实现跨域请求
  20. jQuery的几种显示隐藏方法

热门文章

  1. Python 提交表单数的一点简单介绍How to submit a web form
  2. 50个常用的笔试、面试sql语句
  3. androidstudio做登录界面_Vue-cli+Element-ui实现后台管理系统(二)实现后台登录功能...
  4. 自考计算机系统结构知识点,2019自考计算机系统结构复习精讲资料一
  5. 利用公式画图_【高中数学】重要公式大汇总!
  6. python一个中文占几个字节_python中英文字母和中文汉字所占的字节
  7. 【netty】netty HashedWheelTimer 延时队列
  8. 95-10-160-启动-KafkaApis
  9. 【kafka】kafka 控制台 消费报错 cant rebalance afer 4 retries
  10. 【elasticsearch】Elasticsearch : alias数据类型