簡體   English   中英

什么是解構編譯器? C#如何通過Roslyn在運行時獲得動態語言的能力來生成和調用代碼?

[英]What is Deconstructed Compiler ? How C# gains a dynamic language's ability to generate and invoke code at runtime via Roslyn?

閱讀了有關羅斯林的這篇文章之后。 我遇到了我不理解的兩件事。

  • 解構的編譯器
  • C#通過Roslyn獲得了動態語言在運行時生成和調用代碼的能力

我在堆棧溢出中搜索了很多帖子,並用谷歌搜索了它。 但無法了解全部情況。

誰能給我解釋一下,或者給我一些有關這些主題的鏈接和資源。

摘自鏈接文章:

Hejlsberg演示了一個C#程序,該程序將一些代碼片段作為字符串傳遞給C#編譯器。 編譯器將生成的IL匯編代碼作為對象返回,然后將其傳遞到公共語言運行時(CLR)以執行。 瞧! 借助Roslyn,C#獲得了動態語言在運行時生成和調用代碼的能力。

部分:

[...] C#獲得了動態語言在運行時生成和調用代碼的能力。

...只是博客帖子作者的一個非常錯誤的假設...

  1. 從應用程序編譯代碼不會將C#轉換為動態語言 ,也不會將新的C#編譯器替代解釋器...

  2. 自從C#誕生以來,C#就能夠使用Reflection Emit在運行時生成代碼。 新的編譯器似乎沒有添加該功能,但是無論如何,使用新的編譯器從常規C#代碼生成代碼比使用Reflection Emit容易。 此外,正如@hvd在某些評論中指出的那樣,自C# CSharpCodeProvider使用CSharpCodeProvider以來,這也是可能的。

  3. 從.NET 4.0開始,C#可以使用動態語言運行時與動態語言進行互操作,該動態運行時的創建是為了在.NET頂部打開解釋語言的實現之門(並使COM互操作更容易...)。

關於另一個問題(關於解構編譯器的問題 ),這意味着新的C#編譯器允許您掛接其他代碼以基於C#編譯步驟執行操作。

我將看一下GitHub上的Roslyn概述,其中有許多細節應該使這個話題更深入。

暫無
暫無

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

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