C#编译为CIL

Bac*_*ave 6 c#

我理解以下C#代码:

var evens = from n in nums where n % 2  == 0 select n;
Run Code Online (Sandbox Code Playgroud)

编译为:

var evens = nums.Where(n => n % 2 == 0);
Run Code Online (Sandbox Code Playgroud)

但它是什么意思,它编译到那?我的印象是C#代码直接编译成CIL?

p.s*_*w.g 2

我认为你误解了一些东西。查询表达式:

var evens = from n in nums where n % 2 == 0 select n;
Run Code Online (Sandbox Code Playgroud)

编译为:

var evens = nums.Where(n => n % 2 == 0);
Run Code Online (Sandbox Code Playgroud)

相反,这两行代码直接编译为 CIL。碰巧它们编译成(实际上)相同的 CIL。编译器在分析查询代码的过程中可能会将查询转换为中间形式,但最终的结果当然是CIL。