zoukankan      html  css  js  c++  java
  • C#中foreach的实现原理

    C#中foreach的实现原理

    在探讨foreach如何内部如何实现这个问题之前,我们需要理解两个C#里边的接口,IEnumerable 与 IEnumerator. 在C#里边的遍历集合时用到的相关类中,IEnumerable是最基本的接口。这是一个可以进行泛型化的接口,比如说IEnumerable<User>.在微软的.NET推出了这两个接口后,才有了foreach的用法,可以说,foreach是建立在这两个接口的基础之上的,foreach的前提是其里边的容器要实现了IEnumerable接口。

     

    IEnumerable 这个接口里边定义的内容非常简单,最重要的就是里边有一个抽象方法GetEnumerator. IEnumerable的意思是这个集合是可以遍历的,而这个GetEnumerator方法返回的IEnumerator的就是一个遍历器,用这个工具来遍历这个类。如果说IEnumerable 是一瓶香槟,那么IEnumerator就是一个开瓶器。在实现这个IEnumerable接口的时候,必须要实现这个GetEnumerator方法,要返回一个实例化的IEnumorator.

    下面来介绍一下这个IEnumorator接口。这个接口中定义的内容也很简单,包括Current,就是返回这个遍历工具所指向的那个容器的当前的元素,MoveNext 方法就是指向下一个元素,当遍历到最后没有元素时,返回一个false.当我们实现一个IEnumerable类的时候,我们的目的就应该是遍历这个集合,所以同时我们要实现IEnumerator这个工具类,定义我们自己的逻辑来告诉CLR我们怎么去遍历这个集合。

  • 相关阅读:
    数据共享之死锁
    响应式菜单制作
    工作日志2014-07-01
    Thinkphp 无法使用-&gt;order() 排序的两种解决的方法!
    C#
    HDU1232 畅通project 并查集
    Cocos2d-x优化中图片优化
    1.3.4 设计并发友好的应用程序
    UIView的层介绍
    《鸟哥的Linux私房菜-基础学习篇(第三版)》(三)
  • 原文地址:https://www.cnblogs.com/gearsir/p/13231153.html
Copyright © 2011-2022 走看看