`
bbls
  • 浏览: 63247 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

IList、ICollection、IEnumerable 之辨析

阅读更多

祖宗:IEnumerable

此接口只有一个方法 GetEnumerator();

是FrameWork为了实现迭代器模式设计的接口。所有继承了IEnumerable的类,要使用foreach迭代器时,就需要使用该方法。因此也只有实现了该接口的类才可以使用foreach。

ICollection继承自IEnumerable,IList继承自ICollection

这两个接口都是为了给集合提供一些公用的方法。只是分了两个层次,IList比ICollection多几个方法,增加,移除成员。可以简单理解为:ICollection主要针对静态集合;IList主要针对动态集合

IList,ICollection,IEnumerable 在命名空间System.Collections中。

IList<T>,ICollection<T>,IEnumerable<T> 在System.Collections.Generic 命名空间中。

IList<T>,ICollection<T>,IEnumerable<T> 是2.0引入泛型以后新增的。主要是提高重用性与类型安全。

IEnumerable<T>继承自IEnumerable

ICollection<T>继承自IEnumerable<T>

IList<T>继承自ICollection<T>

因此可以完全使用泛型接口,而放弃使用ICollection和IList。泛型接口提供了更好的类型安全和编译时的检验。

补充:

IEnumerable<T>和IEnumerable都只有一个方法。ICollection<T>和ICollection的结构是不一样的。ICollection<T>比ICollection多几个方法。它包含了几个IList中的几个方法。也许是对以前的改进。

分享到:
评论

相关推荐

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

    在C#编程语言中,`IEnumerable&lt;T&gt;`、`ICollection&lt;T&gt;`、`IList&lt;T&gt;`以及`List&lt;T&gt;`是四个常见的接口和类,它们都与集合操作密切相关,但各自具有不同的特性和用途。以下是对这些概念的详细解释: 1. **IEnumerable**...

    IEnumerable<T>、IEnumerable、ICollection<T>、IList<T>、ObservableCollectin<T>和Collection<T>得关系。

    本文将详细解释`IEnumerable&lt;T&gt;`、`IEnumerable`、`ICollection&lt;T&gt;`、`IList&lt;T&gt;`、`ObservableCollectin&lt;T&gt;`以及`Collection&lt;T&gt;`之间的关系。 首先,`IEnumerable&lt;T&gt;`接口是基础,它定义了一个可以被枚举(即遍历)...

    IEnumerable<T>、ICollection<T>、IList<T>、ObservableCollectin<T>和Collection<T>的关系

    在.NET框架中,`IEnumerable&lt;T&gt;`、`ICollection&lt;T&gt;`、`IList&lt;T&gt;`、`ObservableCollection&lt;T&gt;`和`Collection&lt;T&gt;`是几个重要的泛型接口和类,它们在处理集合数据时扮演着不同的角色,提供了不同程度的功能和性能优化。...

    C#中IList&lt;T&gt;与List&lt;T&gt;的区别深入解析

    首先,`IList&lt;T&gt;`是一个接口,它是`ICollection&lt;T&gt;`的子接口,同时也继承自`IEnumerable&lt;T&gt;`和`IEnumerable`。`IList&lt;T&gt;`接口定义了一组方法和属性,允许程序员对集合进行添加、删除、索引访问等操作。然而,由于它...

    C#基础知识 IList详解 非泛型

    首先,`IList`接口继承自`ICollection`和`IEnumerable`,它提供了对集合中的元素进行添加、删除和查找等操作的方法。在非泛型版本的`IList`中,其元素类型为`object`,这意味着它可以存储任何类型的对象,但这也带来...

    IList排序(C#)

    `IList&lt;T&gt;`接口继承自`ICollection&lt;T&gt;`和`IEnumerable&lt;T&gt;`,并提供了对列表元素的索引访问,以及添加、删除、查找和排序等操作。本篇文章将深入探讨`IList&lt;T&gt;`接口中的排序功能,以及如何在C#中实现`IList&lt;T&gt;`排序。...

    C#基础知识 IList泛型类

    IList接口继承自ICollection和IEnumerable,并添加了一些额外的方法和属性,如Insert、RemoveAt等,使我们可以对列表进行动态操作。T是类型参数,代表我们要在列表中存储的元素类型。 在C#中使用IList的主要优点有...

    C#中List与IList的区别.,C#中List与IList的区别.,C#中List与IList的区别.

    它不仅实现了IList接口,还实现了ICollection、IEnumerable和ICollection等接口,提供了丰富的成员方法和属性,如Add、Remove、IndexOf和Sort等,可以方便地对列表进行各种操作。 相反,IList是一个接口,它定义了...

    ILIST添加操作去掉重复的名字

    它继承自`ICollection&lt;T&gt;`和`IEnumerable&lt;T&gt;`,提供了添加、删除、索引访问等操作。常见的实现类有`List&lt;T&gt;`。以下是一些常用的方法: 1. `Add(T item)`: 向列表中添加一个元素。 2. `Contains(T item)`: 检查列表...

    C#的IList中的方法

    它是`ICollection`接口的一个子接口,同时实现了`IEnumerable`接口,因此除了`ICollection`提供的方法之外,`IList`还提供了一些额外的功能,比如索引器(允许通过索引来访问元素)和排序功能等。 #### 三、`IList`...

    C# IList多字段排序

    在C#编程中,`IList&lt;T&gt;`是一个接口,它扩展了`ICollection&lt;T&gt;`和`IEnumerable&lt;T&gt;`,提供了对列表的动态数据操作能力,比如添加、删除和索引访问元素。`IList&lt;T&gt;`接口是许多集合类型的基接口,如`List&lt;T&gt;`。在实际...

    将IList转换成DataTable和DateSet的类

    1. **IList**:这是.NET Framework中的一个接口,继承自ICollection和IEnumerable。它提供了一个包含特定类型元素的有序列表,并支持索引访问。IList可以是任何实现了该接口的集合,如ArrayList或List。 2. **...

    C# 解析json格式数据为IList

    例如,如果你有一个JSON数组,你可能希望将其解析为`IList&lt;string&gt;`或`IList&lt;MyCustomClass&gt;`,具体取决于JSON数据的内容。 C#中解析JSON通常使用的是Json.NET库,这是一个非常流行且功能强大的开源库,可以方便地...

    IList和List的区别

    // 使用IList接口 for (int i = 0; i ; i++) { TestClass tc = new TestClass(); tc.Id = i; tc.Name = "Test Data" + i; list2.Add(tc); } int count2 = 0; foreach (var tc in list2) { if (tc.Id &gt;= 1 && tc.Id ...

    C程序设计资料全集PPT课件.pptx

    总结来说,C程序设计中的集合类型涉及了泛型和非泛型的区分,以及各种接口如IEnumerable、ICollection和IList的实现。理解这些概念和接口,可以帮助我们更有效地管理和操作数据,提高代码的效率和安全性。在编写C...

    Stimulsoft Reports.Net 2010.1 Full+CRACK.part2.rar

    PostgeSql, IList, IEnumerable, ITypedList. Created reports can be used both in Windows Forms and in Asp.Net. Rendered report can be exported to: Pdf, Xml, Html, Excel, Rtf, Txt, Emf, Bmp, Jpeg, Gif...

    IList转换为DataTable

    ### IList转换为DataTable 的实现方法 在.NET框架中,`IList&lt;T&gt;`与`DataTable`是两种非常常见的数据结构。前者是一种泛型接口,主要用于处理类型安全的列表;而后者则是.NET Framework中用于存储数据的一种表格形式...

    C# ListT的用法小结

    所属命名空间:System.Collections.Generic public class List&lt;T&gt; : IList, ICollection, IEnumerable, IList, ICollection, IEnumerable List类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组...

Global site tag (gtag.js) - Google Analytics