【转】ListT和ILIstT的区别
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;}} }
![](/assets/blank.gif)
注意:
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的区别相关推荐
- Entity Framework中使用IEnumerableT、IQueryableT及IListT的区别
1. IEnumerable<T> IEnumerable<T> :对于在内存中集合上运行的方法,返回的可枚举对象将捕获传递到方法的参数.在枚举该对象时,将使用查询运算符的逻辑 ...
- IListT和ListT区别
写代码时对: IList IList11 =new List (); List List11 =new List (); 有所疑惑,于是在网上搜索一下,很受启发,于是收藏下来,但对部分观点不敢苟同,用 ...
- C#中IListT与ListT的区别感想
写代码时对: IList IList11 =new List (); List List11 =new List (); 有所疑惑,于是在网上搜索一下,很受启发,于是收藏下来,但对部分观点不敢苟同,用 ...
- [C#]泛型与非泛型集合类的区别及使用例程,包括ArrayList,Hashtable,ListT,DictionaryTkey,Tvalue,SortedListTkey,Tvalue,...
今天有空正好把泛型和非泛型集合类写了一个比较,并做了个的例程,可以比较清楚的理解它们概念和使用方法. 泛型与非泛型集合类在C#程序中是非常重要的一个基础概念,这里列一个表来进行对比: 非泛型集合类 泛 ...
- ListT中,Remove和RemoveAt区别
Remove删除的是匹配的第一项.比如你的list里面有2个相同的项.那么就删除第一个.后面的不删除,找不到元素和删除失败都返回false RemoveAt是删除索引下的项 转载于:https://w ...
- ilistT 与listT 之间的相互转换
ilist<T> 与list<T> 之间的相互转换 1> 将list<T>转化为ilist<T> 代码 #region 转化list为ilist ...
- RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别
1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...
- C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别
最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...
- gcc 和 g++ 的联系和区别,使用 gcc 编译 c++
GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...
最新文章
- SAP MM ME1M报表结果不科学?
- 集合之四:List接口
- Hdu 2522 hash
- POJ2976——Dropping tests(0/1分数规划)
- 环境变量_UG环境变量设置
- vue 修改favicon
- java程序设计复习题_java程序设计复习大全(100题及答案).doc
- 8086汇编-实验5(微调)-用栈实现数据交换位置
- mysql 排序速度_MySQL排序速度慢而且可能不稳定
- 正则表达式 匹配标签里面的值 eg:image input
- 【白皮书分享】2021内容营销白皮书.pdf(附下载链接)
- python na不显示 占位_Python学习之路—Python基础(一)
- 读Pyqt4教程,带你入门Pyqt4 _007
- redis中key的归类
- 《应用时间序列分析:R软件陪同》——1.4 本书的内容
- 人脸聚类Learning to Cluster Faces(翻译)
- 计算机毕业设计选题建议
- c++ string 易语言,如何把C++变成易语言
- Ajax实现跨域请求
- jQuery的几种显示隐藏方法
热门文章
- Python 提交表单数的一点简单介绍How to submit a web form
- 50个常用的笔试、面试sql语句
- androidstudio做登录界面_Vue-cli+Element-ui实现后台管理系统(二)实现后台登录功能...
- 自考计算机系统结构知识点,2019自考计算机系统结构复习精讲资料一
- 利用公式画图_【高中数学】重要公式大汇总!
- python一个中文占几个字节_python中英文字母和中文汉字所占的字节
- 【netty】netty HashedWheelTimer 延时队列
- 95-10-160-启动-KafkaApis
- 【kafka】kafka 控制台 消费报错 cant rebalance afer 4 retries
- 【elasticsearch】Elasticsearch : alias数据类型