我查看了http://referencesource.microsoft.com/上的源代码,看起来所有的源代码都在C#中。 我还查看了新的C#编译器平台( Roslyn )的源代码,它也在C#中。 这怎么可能? 用C#编写C#语言编译器吗? 还是我错过了明显的东西? 如果C#编译器是用C#编写的,那么它是如何工作的?
给出以下代码: public class C { public void M() { var x = 5; Action<int> action = y => Console.WriteLine(y); } } 使用VS2013,.NET 4.5。 在查看反编译的代码时,我们可以看到编译器正在caching呼叫站点的代理: public class C { [CompilerGenerated] private static Action<int> CS$<>9__CachedAnonymousMethodDelegate1; public void M() { if (C.CS$<>9__CachedAnonymousMethodDelegate1 == null) { C.CS$<>9__CachedAnonymousMethodDelegate1 = new Action<int>(C.<M>b__0); } Action<int> arg_1D_0 = C.CS$<>9__CachedAnonymousMethodDelegate1; } [CompilerGenerated] private static […]