C#的源代码首先要被编译为Microsoft的中间语言(IL)的代码。这些中间代码也被称为托管代码。它们不是文本代码,而是类似Java源程序被编译后的字节代码。然后使用公共语言运行库(CLR)作为执行环境来执行这些托管代码。这样做的好处有:
(1) 平台无关
只要安装了.Net Framework的平台就可以用CLR来执行中间代码。换句话说,相同的源代码在不同的平台上编译得到的中间代码都是一样的,而不同的平台需要不同的CLR来执行中间代码。当然这个不是绝对的平台无关,不是说就可以把C#的程序拿到Linux中编译运行了。目前主要还是在Windows平台上运行托管代码。也有一些工程致力于把.Net Framework应用到Linux平台中。
(2) 提高性能
托管代码要经过再次编译才能变成机器的本地代码,看起来.Net的程序性能比起直接编译为本地代码的程序运行效率要低,可是实际上,Microsoft采用了一些手段来提高.Net程序的性能。
· 即时编译(JIT编译),也就是运行托管代码时,只编译用到的那部分代码,而不是先把这个托管代码编译好,然后再运行。
· 编译器接合处理器进行编译。以往直接编译为本地代码的编译器,比如Visual Studio 6中的编译器,不会考虑处理器的不同特性。它不知道你使用的是奔腾3还是奔腾4的处理器,而CLR把处理器的特性考虑了进去。也就是说,编译器会对处理器的特定性能进行代码的优化。