zoukankan      html  css  js  c++  java
  • IEnumerable是集合,IEnumerator是集合的迭代器

    我们常用IEnumerable,却忽视IEnumerator。简单来说,IEnumerable是可以被循环遍历的集合,IEnumerator实施循环遍历。

    接口分别是:

    public interface IEnumerator
    
    {
    
        bool MoveNext();
    
        object Current{get;}
    
        void Reset();
    
    }
    
    public interface IEnumerable
    
    {
    
        IEnumerator GetEnumerator();
    
    }
    

    来执行这样简单的一个控制台程序。

        class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                IEnumerable<string> list = new List<string>() {"hello","world"};
    
                foreach (var item in list)
    
                {
    
                    Console.WriteLine(item);
    
                }
    
                Console.ReadKey();
    
            }
    
        }

    在"解决方案资源管理器"中,右键控制台项目,点击"在文件资源管理器中打开文件"。

    依次点击"bin"和"Debug"文件夹。

    复制下当前文件目录。

    打开开发人员命令提示。

    由于应用程序文件在F盘,输入如下:

    1

    导向到刚才复制的目录,输入如下:

    2

    查看当前目录下的清单,输入如下:

    3

    使用.NET的ILDASM反编译应用程序文件,并输入到某个txt文本中。输入如下:

    4

    打开1.txt文件,输入如下:

    5

    1.txt文件被打开,相关的IL代码如下:

    6

    可见,foreach也是语法糖,当使用foreach循环遍历的时候,实际上是调用IEnumerable的IEnumerator的方法。

    所以,对于foreach,可以换种写法:

        class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                IEnumerable<string> list = new List<string>() { "hello", "world" };
    
                IEnumerator it = list.GetEnumerator();
    
                while (it.MoveNext())
    
                {
    
                    Console.WriteLine(it.Current);
    
                }
    
                Console.ReadKey();
    
            }
    
        }
    
  • 相关阅读:
    Ellipse4SL 的安装包和环境配置要求
    什么是SOHO人
    D2上的Silverlight
    银光团队项目正式启动,欢迎您的参与!
    Silverlight开发团队招募SOHO团员若干
    SOHO新的生活方式
    [银客北京开发团队]承接各种Silverlight和WPF外包项目和合作项目
    微软Silverlight 3.0 概观
    grers
    翻译电文
  • 原文地址:https://www.cnblogs.com/darrenji/p/4382663.html
Copyright © 2011-2022 走看看