gpt4 book ai didi

c# - 什么是解构编译器? C# 如何通过 Roslyn 获得动态语言在运行时生成和调用代码的能力?

转载 作者:行者123 更新时间:2023-11-30 20:36:32 25 4
gpt4 key购买 nike

看完this article关于罗斯林。我遇到了两件我不明白的事情。

  • 解构编译器
  • C# 获得动态语言的能力,通过 Roslyn 在运行时生成和调用代码

我搜索了很多关于 stack overflow 的帖子并用谷歌搜索了它。但无法得到全貌。

任何人都可以向我解释或指导我提供有关这些主题的一些链接和资源。

最佳答案

摘自链接文章:

Hejlsberg demonstrated a C# program that passed a few code snippets to the C# compiler as strings; the compiler returned the resulting IL assembly code as an object, which was then passed to the Common Language Runtime (CLR) for execution. Voilà! With Roslyn, C# gains a dynamic language's ability to generate and invoke code at runtime.

部分:

[...] C# gains a dynamic language's ability to generate and invoke code at runtime.

...只是博文作者做出的一个非常错误的假设...

  1. 从应用程序编译代码不会将 C# 变成动态语言,也不会将新的 C# 编译器变成解释器的替代品...

  2. 自从 C# 使用 Reflection Emit 以来,它就能够在运行时生成代码。新编译器似乎没有添加该功能,但无论如何,使用新编译器从常规 C# 代码生成代码比使用 Reflection Emit 更容易。此外,正如@hvd 在一些评论中指出的那样,自从 C# 开始使用 CSharpCodeProvider 以来,这也是可能的。

  3. 自 .NET 4.0 以来,C# 可以使用动态语言运行时 与动态语言互操作,它的创建是为了打开在 .NET 之上实现解释语言的大门(以及使 COM 互操作更容易...)。

关于另一个问题(关于解构编译器),这意味着新的 C# 编译器允许您 Hook 其他代码以执行基于 C# 编译步骤的操作。

我会看一下 Roslyn Overview on GitHub其中有很多细节应该可以更深入地讨论该主题。

关于c# - 什么是解构编译器? C# 如何通过 Roslyn 获得动态语言在运行时生成和调用代码的能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36820533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com