C#中的本机代码?

Ayu*_*ush 5 c# bytecode managed-code virtual-machine native-code

我从去年10月开始观看Microsoft构建大会,我注意到他们宣布,要构建新的Metro风格应用,开发人员可以使用C#编写本机代码。这怎么可能?我只是好奇。C#是否不是设计(作为CLI标准的一部分)首先被编译为中间字节代码然后在虚拟机上运行的?在虚拟机上运行的东西如何称为“本机代码”?

bkr*_*bkr 4

从托管代码调用本机代码始终是可能的。通常,任何与 Windows 交互的 .net 应用程序在某些时候都会将控制权移交给本机组件。

从历史上看,要手动调用本机代码,我们会使用 PInvoke(平台调用)——它允许托管代码调用在 DLL 中实现的非托管函数。

现在的新功能是 Windows 运行时,基本上是一个增强的基于 COM 的 API。您可以在这里阅读相关内容 - http://en.wikipedia.org/wiki/Windows_Runtime - 它只是使过程更容易/更少被无意中听到。

编辑- 需要明确的是,演示并不是说 c# 可以编译为本机代码。这仍然是不可能的。他们吹捧 winrt 提供了一种新的(更干净的)机制,用于在 C# 中包含对本机代码的调用。

  • 他误解了演讲内容。您无法将 C# 编译为本机代码(理论上您可以构建这样的编译器,但是它不存在。)但是,据说将 C# 与本机代码结合起来更容易。有关示例,请参阅http://blogs.msdn.com/b/pfxteam/archive/2011/11/12/10236375.aspx (2认同)