Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在编译/优化后查看C#代码?_C#_.net_Optimization_Compiler Construction_Yield - Fatal编程技术网

如何在编译/优化后查看C#代码?

如何在编译/优化后查看C#代码?,c#,.net,optimization,compiler-construction,yield,C#,.net,Optimization,Compiler Construction,Yield,我正在阅读关于yield关键字的文章,突然发现了C#Depth:中的一个示例章节 第一块代码利用yield关键字来生成一个简单的迭代器。但是,第二个代码块在编译器按照自己的方式处理后显示了这段代码。除此之外,它还将yield语句分解为一个状态机 编译器正在修改的其他几个代码示例在页面上很明显 我的问题是:作者是否真的能够在编译后访问代码,或者他是否推断出代码将是什么样子?您可以使用Reflector进行查看,这可能是您最好的选择: NET CLR实际上有一种称为MSIL的程序集形式,以及一个汇编

我正在阅读关于
yield
关键字的文章,突然发现了C#Depth:中的一个示例章节

第一块代码利用
yield
关键字来生成一个简单的迭代器。但是,第二个代码块在编译器按照自己的方式处理后显示了这段代码。除此之外,它还将
yield
语句分解为一个状态机

编译器正在修改的其他几个代码示例在页面上很明显


我的问题是:作者是否真的能够在编译后访问代码,或者他是否推断出代码将是什么样子?

您可以使用Reflector进行查看,这可能是您最好的选择:


NET CLR实际上有一种称为MSIL的程序集形式,以及一个汇编程序和分解程序。是的,您可以编译代码,然后查看编译后的CLR指令


可能两者都有。使用代码对编译后的程序集进行反向工程非常容易。C#语言规范是一个公共文档,它定义了如何编译各种语法上甜蜜的东西。作者可以使用任何一种方法,也可以混合使用这两种方法。

请查看编译后的IL


(真的,一旦你进入了你的视线,这会很有趣)

作者本人提到:

显然,编译器实际上并没有生成C#,但我已经使用Reflector将代码反编译为C#

在同一段中,标题为《高层概述:模式是什么?

JetBrains dotPeek》


它免费且易于使用:)

Reflector是你的朋友这个问题的真正答案应该是“太容易了!”Reflector真的是你的朋友。哇。这就是为什么略读文章不会让你走得很远:)。谢谢@SimpleCoder——如果你想使用C#,我的朋友=),你需要能够看到sharp。刚刚下载了它,谢谢你的提示!非专业版还会与VS集成吗?