• 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();
    
            }
    
        }
    
  • 相关阅读:
    Memo
    list查询记录时页面变成空白
    get the mail ids of the group members
    ui action(server side) change column value
    catalog item 时间按照指定形式输出
    select box 联动
    lookup select box和select box 联动
    函数二--递归
    函数一
    指针3
  • 原文地址:https://www.cnblogs.com/darrenji/p/4382663.html
Copyright © 2020-2023  润新知