如何在编译/优化后查看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集成吗?