zony.me

C# 当中 foreach 的原理

在 C# 当中的 foreach 语句实际上就是遍历迭代器的语法糖。例如我们拥有以下代码:

C#
public class TestClass
{
    public void TestMethod()
    {
        var integers = new int[] {1,2,3,4,5,6,7,8,9};
        
        foreach(var @int in integers)
        {
            Console.WriteLine(@int);
        }
    }
}

上述代码结构十分简单,作用就是遍历 integers 数组,并将其结果输出到控制台当中。 由于 int[] 是一个 Array 类型,它继承并实现了 IEnumerbale<T> 接口,所以 foreach 语句实际上是翻译成下面伪代码进行遍历输出的。

C#
public class TestClass
{
    public void TestMethod()
    {
        var integers = new int[] {1,2,3,4,5,6,7,8,9};
        
        var tmpEnumerator = integers.GetEnumerator();
        try
        {
            while(tmpEnumerator.MoveNext())
            {
                var itemValue = tempEnumerator.Current;
                // 需要执行的代码段
                Console.WriteLine(itemValue);
            }
        }
        finally
        {
           tmpEnumerator.Dispose();
        }
    }
}
C# 当中 foreach 的原理
作者 Zony · 发布于 2019-02-14
Licensed under CC BY-NC-SA 4.0
← 上一篇JSON 序列化的时候忽略无效的属性值下一篇 →C# 多线程学习笔记 - 3