[英]What is Deconstructed Compiler ? How C# gains a dynamic language's ability to generate and invoke code at runtime via Roslyn?
閱讀了有關羅斯林的這篇文章之后。 我遇到了我不理解的兩件事。
我在堆棧溢出中搜索了很多帖子,並用谷歌搜索了它。 但無法了解全部情況。
誰能給我解釋一下,或者給我一些有關這些主題的鏈接和資源。
摘自鏈接文章:
Hejlsberg演示了一個C#程序,該程序將一些代碼片段作為字符串傳遞給C#編譯器。 編譯器將生成的IL匯編代碼作為對象返回,然后將其傳遞到公共語言運行時(CLR)以執行。 瞧! 借助Roslyn,C#獲得了動態語言在運行時生成和調用代碼的能力。
部分:
[...] C#獲得了動態語言在運行時生成和調用代碼的能力。
...只是博客帖子作者的一個非常錯誤的假設...
從應用程序編譯代碼不會將C#轉換為動態語言 ,也不會將新的C#編譯器替代解釋器...
自從C#誕生以來,C#就能夠使用Reflection Emit在運行時生成代碼。 新的編譯器似乎沒有添加該功能,但是無論如何,使用新的編譯器從常規C#代碼生成代碼比使用Reflection Emit容易。 此外,正如@hvd在某些評論中指出的那樣,自C# CSharpCodeProvider
使用CSharpCodeProvider
以來,這也是可能的。
從.NET 4.0開始,C#可以使用動態語言運行時與動態語言進行互操作,該動態運行時的創建是為了在.NET頂部打開解釋語言的實現之門(並使COM互操作更容易...)。
關於另一個問題(關於解構編譯器的問題 ),這意味着新的C#編譯器允許您掛接其他代碼以基於C#編譯步驟執行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.