C# 当中 foreach 的原理

摘要:
在C#当中的foreach语句实际上就是遍历迭代器的语法糖。由于int[]是一个Array类型,它继承并实现了IEnumerbale接口,所以foreach语句实际上是翻译成下面伪代码进行遍历输出的。

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

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 语句实际上是翻译成下面伪代码进行遍历输出的。

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 的原理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Markdown温故知新(0):导航目录iOS UIFont 字体名字大全下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下对nginx日志进行统计分析的常用命令

1.awk对nginx日志文件状态码的查询统计命令: No.1. cat /var/log/nginx/access.log-20210128 | awk '{print $9,$10}' | awk 'BEGIN{count[$1]=0}($2!=200){count[$1]+=1}END{for(i in count) print(i,count[i]...

XSS的高级利用部分总结 -蠕虫

XSS的高级利用部分总结 -蠕虫,HTTP-only,AJAX本地文件操作,镜象网页本帖最后由 racle 于 2009-5-30 09:19 编辑 XSS的高级利用总结 -蠕虫,HTTPONLY,AJAX本地文件操作,镜象网页By racle@tian6.com http://bbs.tian6.com/thread-12711-1-1.html转帖请保...

js之预解析

一、所谓的预解析就是:在当前作用域中,JavaScript代码执行之前,浏览器首先会默认的把所有带var和function声明的变量进行提前的声明或者定义。 1)var声明的变量在预解析的时候只是提前的声明, 2)function声明的函数在预解析的时候会提前声明并且会同时定义。 二、预解析只发生在当前的作用域下 程序最开始的时候,只对window下的...

图片轮播插件-carouFredSel

carouFredSel图片轮播插件基于Jquery,比较常规的轮播插件,支持滚轮及键盘左右按键,加入其它插件可实现更加复杂的特效。 主页地址:http://caroufredsel.dev7studios.com/ 例子: html: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio...

Mac下搭建php开发环境【转】

Mac OS X 内置了Apache 和 PHP,这样使用起来非常方便。本文以Mac OS X 10.6.3为例。主要内容包括: 启动Apache 运行PHP 安装MySQL 使用phpMyAdmin 配置PHP的MCrypt扩展库 设置虚拟主机 启动Apache   有两种方法: 打开“系统设置偏好(System Preferences)” ->...

RSA加密前端JS加密,后端asp.net解密,报异常

RSA加密前端JS加密,后端asp.net解密,报异常 参考引用:http://www.ohdave.com/rsa/的JS加密库 前端JS加密代码: function GetChangeStr() { debugger; var pwdStr = document.getElementById("txtPa...