2

我只是想问一下我对.NET 是否正确。因此,.NET 是一个新框架,使您能够轻松实现新旧 Windows 功能。它在编译成“字节码”的方式上与 java 类似,但它的名称是 Common Language Infrastructure,或 CLI。该语言由.NET Framework 解释,因此使用.NET 编程生成的代码不能直接由CPU 执行。现在,很少有语言可以编译为 CLI。首先,它是微软开发的 C#,而不是 J#、C++ 其他。我怀疑这通常是正确的,至少我希望我理解正确。

但是,我仍然缺少的是,你能用 C# 编写机器码编译代码吗?而且,如果使用 Visual Studio 2005,当我选择 Win32 项目时,它会被编译成机器代码,所以运行这个应用程序只需要 windows 动态链接库,因为静态库代码是在链接阶段实现到应用程序中的。这些动态链接库在每个 Windows 安装中实现,或由 DirectX 安装提供。

但是当我在 Visual Studio 2005 中选择 CLR 时,应用程序被编译成 CLI 代码,它首先执行 .NET 框架,然后 .NET 框架执行该程序,因为它不是机器代码。

那么,我是对的吗?我问是因为您可以在互联网上阅读这些信息,但我没有人告诉我我是否理解正确。谢谢。

4

2 回答 2

2

.NET 的第一个 IDE 出现在 2002 年,因此 .NET 已有八年历史。整个永恒;)

.NET 从 C#、Basic 和 J# 以及 C++ 开始。许多其他语言紧随其后,例如在动态语言 IronRuby 领域。使用 C# 和 Basic,没有选项可以生成不需要 .NET 框架的代码,而使用 C++,您可以选择。所以不,使用标准工具您无法将 C# 编译为机器代码。

有一些东西可以优化运行时(预 JITting 程序集,看看 ngen)。它是 jited 并且并不总是被解释,因此它比 VB 脚本快得多。这通常不是每次都执行,而是第一次执行一个程序集或在安装应用程序时使用 ngen。

HTH,-sa

于 2010-03-16T10:09:20.197 回答
2
  • CLI 不是由 .NET 框架解释的,而是通常编译的。纯粹的解释太慢了。
  • C#、J#等同时出现。事实上,J# 起源于 Microsoft J++....所以可以说它更早存在。C++ 以前也有,您可能指的是托管 C++(现在:C++/CLI)。我认为这是同时完成的——并行。在 microosft 工作的人超过 2-3 人;)
  • 您不能将 C# 编写为机器代码。win32 项目是本机 C++(即不使用 .NET 运行时的版本)。
于 2010-03-16T10:11:14.360 回答