簡體   English   中英

C#編譯為CIL

[英]C# Compiled to CIL

我理解以下C#代碼:

var evens = from n in nums where n % 2  == 0 select n;

編譯為:

var evens = nums.Where(n => n % 2 == 0);

但它是什么意思,它編譯到那? 我的印象是C#代碼直接編譯成CIL?

我覺得你誤會了什么。 查詢表達式:

var evens = from n in nums where n % 2 == 0 select n;

編譯為:

var evens = nums.Where(n => n % 2 == 0);

相反,這兩行代碼直接編譯為CIL。 恰好它們編譯為(有效)相同的CIL。 編譯器可以在分析查詢代碼的過程中將查詢轉換為中間形式,但最終結果當然是CIL。

這是一個C#/ LINQ表達式:

var evens = from n in nums where n % 2 == 0 select n;

這是一個C#lambda表達式:

var evens = nums.Where(n => % 2 == 0);

他們都是 C#,他們被編譯成CIL。

你可以在這里閱讀更多關於lambdas的信息:

您可以在此處閱讀有關LINQ的更多信息:

這兩個表達式是等價的。

無法走“編譯”成其他。 誠實 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM