托管代码是在编译后生成的吗?

Is managed code generated after compilation?

提问人:phougatv 提问时间:2/21/2022 最后编辑:phougatv 更新时间:2/21/2022 访问量:69

问:

注意:只是想澄清一下,在我遇到一个似乎与另一个MSDN文档相矛盾的MSDN文档后,我目前的理解是否正确。我也已经通过以下链接 -

  1. 是否管理 C# 不安全代码?
  2. C语言中的不安全代码和非托管代码有什么区别#

我有以下理解(这是我在通过此链接后形成的):

托管代码:在编译时,用一种高级语言(可以在 .NET 上运行,如 C#、F# 等)编写的代码会生成 IL,其执行由运行时(在本例中为 CLR,无论 Mono 、.NET Framework、.NET Core/.NET 5+ 的实现如何)管理和监督,称为托管代码。

IL:它是托管代码编译的产物。

但后来我遇到了这个链接,根据它说:编译为托管代码时,编译器将您的源代码翻译成 Microsoft 中间语言 (MSIL)...等等。

这两个文档都来自MSDN,不确定它是否是错别字,因此存在问题。

那么哪一个是正确的呢?

C# .NET CLR 中间语言 托管代码

评论

0赞 Peter Csala 2/21/2022
托管代码意味着您不必特别注意释放托管内存,它是由运行时代表您完成的,运行时会在它认为合适的时候调用垃圾回收器。
0赞 Peter Csala 2/21/2022
IL 代码简化了运行时的工作,因为它只需要理解 IL,而不能理解 C#、VB 和 F#...那么,为什么你认为它们是相互矛盾的呢?
0赞 phougatv 2/21/2022
@PeterCsala矛盾在于,当一个文档说:编译为托管代码...,而另一个说法是:托管代码是用一种可以在 .NET 上运行的高级语言编写的,例如 C#、Visual Basic、F# 等
1赞 Peter Csala 2/21/2022
C#、VB、F# 和 IL 代码都是托管的。因此,编译为托管代码是有效的,但它实际上意味着编译为 MSIL。
0赞 Peter Csala 2/21/2022
我应该留下一个帖子来结束你的问题吗?

答: 暂无答案