C#List转IList方法

简介: List类:表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索、排序和操作的方法。IList接口:表示可按照索引单独访问的一组对象。

QQ图片20220426170632.png

最近工作中使用到了C#的List和IList。


这里参考百度上的资料,总结一下。

 

IList使用命名空间:


using System.Collections;

 

List类:表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索、排序和操作的方法。


IList接口:表示可按照索引单独访问的一组对象。

 

IList 泛型接口是 ICollection 泛型接口的子代,并且是所有泛型列表的基接口。它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList可以胜任。


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


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


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

 

List和IList的区别:


List是一个类,IList是一个接口。接口和类的区别是本质的,类是负责功能的实现,而接口则是负责功能的定义。所以它们的区别本质上也就是类和接口的区别。

 

list <>是泛型类,它已经实现了IList <>定义的那些方法


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

 

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


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


 那么,我们可以这么理解,这两行代码的目的不一样。


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

 

 是想创建一个List,而且需要使用到List的功能,进行相关操作。


 而IList  IList11 =new List ();


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

 

总之:


想使用接口定义的时候就使用IList(list <>是泛型类,它已经实现了IList <>定义的那些方法)


想使用具体的方法实现就使用List

 

下边是List转IList的方法: (实例在文末)


/// <summary>
/// List转IList公共方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="listObjects"></param>
/// <returns></returns>
protected static IList<T> ConvertToGenericList<T>(IList listObjects)
{
      IList<T> convertedList = new List<T>(listObjects.Count);
      foreach (object listObject in listObjects)
      {
           convertedList.Add((T)listObject);
      }
      return convertedList;
}



目录
相关文章
|
22天前
|
安全 C#
C# List基本用法
C# List基本用法
|
2月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
2月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
2月前
|
Java 开发者
使用HashMap的values()方法返回的值转换为List时遇到错误
使用HashMap的values()方法返回的值转换为List时遇到错误
|
2月前
|
存储 C# 数据库
C# 生成唯一ID,有哪些方法?
【2月更文挑战第12天】
182 0
|
2月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
4月前
|
编译器 C# 开发者
C# 11.0中的新特性:覆盖默认接口方法
C# 11.0进一步增强了接口的灵活性,引入了覆盖默认接口方法的能力。这一新特性允许类在实现接口时,不仅可以提供接口中未实现的方法的具体实现,还可以覆盖接口中定义的默认方法实现。本文将详细介绍C# 11.0中接口默认方法覆盖的工作原理、使用场景及其对现有代码的影响,帮助开发者更好地理解和应用这一新功能。
|
11天前
|
设计模式 IDE 测试技术
提升 C#编程效率的技巧与方法
【4月更文挑战第20天】提升C#编程效率的关键技巧包括:选择合适的IDE(如Visual Studio)、掌握基础语法、规划良好代码结构、使用代码生成工具、复用代码、利用库和框架、定期重构、应用设计模式、避免过度设计、进行代码审查、自动化测试、学习新技术、养成良好编程习惯、定期备份代码及参与技术社区。通过这些方法,开发者能提高代码质量和开发效率。
|
22天前
|
C#
C# Dev TreeList常用属性方法
C# Dev TreeList常用属性方法
|
29天前
List中的remove方法遇到报错不能删除以及四种解决办法点赞收藏
List中的remove方法遇到报错不能删除以及四种解决办法点赞收藏
16 0