常用接口简析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     }

 

posted @ 2017-04-18 20:12  小王子的博客  阅读(617)  评论(0编辑  收藏  举报