在编译使用.NET Framework或.NET Core库的代码时,不是立即创建专用于操作系统的本机代码,而是把 代码编译为通用中间语言(Common Intermediate Language, CIL)代码,这些代码并非专门用于任何一种操作系统, 也非专门用于C#。其他.NET语言(如Visual Basic .NET或F#)也会在第一阶段编译为这种语言。开发C#应用程 序时,这个编译步骤由Visual Studio完成。
显然,要执行应用程序,必须完成更多工作,这是Just-In-Time(JIT)编译器的任务,它把CIL编译为专用于 0S和目标机器架构的本机代码。这样OS才能执行应用程序。这里编译器的名称Just-In-Time反映了 CIL代码 仅在需要时才编译的事实。这种编译可以在应用程序的运行过程中动态发生,不过开发人员一般不需要关心 这个过程。除非要编写性能十分关键的高级代码,否则知道这个编译过程会在后台自动进行,并不需要人工干 预就可以了。
过去,经常需要把代码编译为几个应用程序,每个应用程序都用于特定的操作系统和CPU架构。这通常是 -种优化形式(例如,为了让代码在AMD芯片组上运行得更快),但有时则是非常重要的(例如,使应用程序可 以同时工作在Win9x和WinNT/2000环境下)。现在就没必要了,因为JIT编译器使用CIL代码,而CIL代码是 独立于计算机、操作系统和CPU的。目前有几种JIT编译器,每种编译器都用于不同的架构,CLR/CoreCLR 会使用合适的编译器创建所需的本机代码。
这样,开发人员需要做的工作就比较少了。实际上,可以忽略与系统相关的细节,将注意力集中在代码的 功能上就够了。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>