常用接口简析1---IEnumerable、IEnumerator简析
常用接口的解析(链接)
1.IEnumerable深入解析
2.IComparable、IComparable接口解析
3.IList、IList接口解析
引言:
IEnumerable和IEnumerable<T>接口在.Net中是非常重要的接口,它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单迭代,IEnumerable和IEnumerable<T>接口是.Net最基本的集合访问器。它定义了一组扩展方法,用来对集合中的元素进行遍历、过滤、排序等操作。
IEnumerable简述:
IEnumerable接口只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象。
IEnumerator简述:
他是一个真正的集合访问器,没有它,就不能使用foreach语句遍历集合或数组,因为只有IEnumerator对象才能访问集合中的项。
1.IEnumerable、IEnumerator、IEnumerable<T>、IEnumerator<T>
IEnumerable:返回一个IEnumerator,支持在普通集合中的遍历.
IEnumerator:提供在普通集合中遍历的接口。
IEnumerable<T>:继承自IEnumerable,返回一个IEnumerator<T>,支持在泛型集合中遍历。
IEnumerator<T>:继承自IEnumerator,提供泛型集合中遍历的接口。
IEnumerable接口:
// 摘要: // 公开枚举器,该枚举器支持在非泛型集合上进行简单迭代。 [ComVisible(true)] [Guid("496B0ABE-CDEE-11d3-88E8-00902754C43A")] public interface IEnumerable { // 摘要: // 返回一个循环访问集合的枚举器。 // // 返回结果: // 可用于循环访问集合的 System.Collections.IEnumerator 对象。 [DispId(-4)] IEnumerator GetEnumerator(); }
IEnumerable<T>接口:
1 // 摘要: 2 // 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代。 3 // 4 // 类型参数: 5 // T: 6 // 要枚举的对象的类型。 7 [TypeDependency("System.SZArrayHelper")] 8 public interface IEnumerable<out T> : IEnumerable 9 { 10 // 摘要: 11 // 返回一个循环访问集合的枚举器。 12 // 13 // 返回结果: 14 // 可用于循环访问集合的 System.Collections.Generic.IEnumerator<T>。 15 IEnumerator<T> GetEnumerator(); 16 }
IEnumerator接口:
// 摘要: // 支持对非泛型集合的简单迭代。 [ComVisible(true)] [Guid("496B0ABF-CDEE-11d3-88E8-00902754C43A")] public interface IEnumerator { // 摘要: // 获取集合中的当前元素。 // // 返回结果: // 集合中的当前元素。 // // 异常: // System.InvalidOperationException: // 枚举数定位在该集合的第一个元素之前或最后一个元素之后。 object Current { get; } // 摘要: // 将枚举数推进到集合的下一个元素。 // // 返回结果: // 如果枚举数成功地推进到下一个元素,则为 true;如果枚举数越过集合的结尾,则为 false。 // // 异常: // System.InvalidOperationException: // 在创建了枚举数后集合被修改了。 bool MoveNext(); // // 摘要: // 将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。 // // 异常: // System.InvalidOperationException: // 在创建了枚举数后集合被修改了。 void Reset(); }
IEnumerator<T>接口:
1 // 摘要: 2 // 支持在泛型集合上进行简单迭代。 3 // 4 // 类型参数: 5 // T: 6 // 要枚举的对象的类型。 7 public interface IEnumerator<out T> : IDisposable, IEnumerator 8 { 9 // 摘要: 10 // 获取集合中位于枚举数当前位置的元素。 11 // 12 // 返回结果: 13 // 集合中位于枚举数当前位置的元素。 14 T Current { get; } 15 }