当前位置: 首页 > 编程笔记 >

C#中IEnumerable、ICollection、IList、List之间的区别

逄兴昌
2023-03-14
本文向大家介绍C#中IEnumerable、ICollection、IList、List之间的区别,包括了C#中IEnumerable、ICollection、IList、List之间的区别的使用技巧和注意事项,需要的朋友参考一下

首先我看看 IEnumerable:

// 摘要:
  //   公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代。
  //
  // 类型参数:
  //  T:
  //   要枚举的对象的类型。
  [TypeDependency("System.SZArrayHelper")]
  public interface IEnumerable<out T> : IEnumerable
  {
    // 摘要:
    //   返回一个循环访问集合的枚举器。
    //
    // 返回结果:
    //   可用于循环访问集合的 System.Collections.Generic.IEnumerator<T>。
    IEnumerator<T> GetEnumerator();
  }

IEnumerable<T> 实现IEnumerable接口方法,那IEnumberable做什么的,其实就提高可以循环访问的集合。说白了就是一个迭代。

再来看看ICollection:

 // 摘要:
  //   定义操作泛型集合的方法。
  //
  // 类型参数:
  //  T:
  //   集合中元素的类型。
  [TypeDependency("System.SZArrayHelper")]
  public interface ICollection<T> : IEnumerable<T>, IEnumerable

原来ICollection<T> 同时继承IEnumerable<T>和IEnumerable两个接口,按我的理解就是,ICollection继续它们2个接口而且扩展了方法,功能强多了。
由原来的步枪变成半自动步枪

我们继续看IList:

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable

靠 IList 继承它们三个接口,怪不得功能这么多啊,那应该属于全自动步枪了

最后来看看List:

public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

这个时候大家仔细看看,它们都是接口,只有List 是类,不仅实现它们的接口,而且还扩展了太多的方法给我利用。哇靠,几乎所有功能都能实现了,简直是激光步枪

按照功能排序List<T> 《IList<T> 《ICollection<T>《IEnumerable<T>

按照性能排序:IEnumerable<T>《ICollection<T>《IList<T>《List<T>

 类似资料:
  • 问题内容: MVC.net场景(和.net)是新手,但是当我想用数据填充“列表”时,似乎可以找到很多选择。就目前的情况而言,我想从项目的选择查询中填充一个列表,并将结果呈现为JSON以输出,因此请耐心等待…。 所以,我的viewmodel类是这样的: 然后,我想用查询输出填充它: 然后,我是否将输出循环到我的List中,以便随后可以在Json返回字符串中输出?当我使用 LIST VS IENUME

  • 本文向大家介绍C#中的IEnumerable和IQueryable有什么区别?,包括了C#中的IEnumerable和IQueryable有什么区别?的使用技巧和注意事项,需要的朋友参考一下 IEnumerable存在于System.Collections命名空间中。 IQueryable存在于系统中。Linq命名空间。 IEnumerable和IQueryable都是正向收集。 IEnumera

  • 问题内容: 我以为和列表上的“ + =”基本上可以做同样的事情-扩展列表而不创建新列表。 我希望可以打印以下代码,但是 为什么我收到此错误?区别在哪里? 我在python2.7.3和python3.4.0中进行了尝试。 问题答案: 使对象有 机会 就地更改对象。但这取决于的类型,这并不意味着对象已就地更改。 这样, 仍然需要重新分配 给;要么返回或新对象返回; 确实翻译成: 由于包含作业,因此在中

  • 我查看了为接口生成的元数据,注意到它实现了 这不是多余的吗?查看的元数据,可以发现它已经实现了

  • 问题内容: 我只是在阅读一些Java书籍并制作一些小程序进行练习,我创建了一个小代码来获取有关所输入路径的信息,该代码为: 现在在输入对话框中,当我输入时,结果是,但是当我输入C:/时,它将显示C中目录和文件的完整列表。 奇怪的是,D驱动器和其他驱动器不会发生这种情况(即D:/和D:的结果是相同的),这是怎么回事? 更新 使用C#在WPF中也会发生同样的情况! 问题答案: 表示“驱动器上当前选择的

  • 本文向大家介绍C#IEnumerable,包括了C#IEnumerable的使用技巧和注意事项,需要的朋友参考一下 示例 在其最基本的形式中,实现IEnumerable的对象表示一系列对象。可以使用c#foreach关键字迭代所讨论的对象。 在下面的示例中,该对象sequenceOfNumbers实现IEnumerable。它代表一系列整数。该foreach循环迭代通过每个反过来。