标签:
基础理论:
1、首先要了解,C#语言并不能独立使用,必须结合.NetFrameWork一起考虑。
2、C#就其本身来看只是一种开发语言,尽管它是用来生成.Net环境的代码,但它本身并不是.Net的一部分,.Net支持的一些特性,C#并不支持。相反,C#语言支持的一些特性,.Net也不支持(如运算符的重载)。
3、NetFrameWork核心是运行库的执行环境,称为公共语言运行库(CLR)或叫.Net运行库,将在CLR控制下运行的代码称之为托管代码。
4、在CLR运行编写好的源码之前需要先进行代码编译,编译分为两个阶段:
(1):将源代码(C#,VB,f#)编译为Microsoft中间语言IL
(2):CLR将IL编译为平台专用代码
IL中间语言和Java字节码共享一种理念:都是低级语言,使用数字代码,而不是文本代码,并且可以快速的转换为本地机器码。对代码而言,这种通用语法提供了很重要的优点:
1、平台无关性
这意味着包含字节码指令的同一文件可以放在任意平台中。(.Net的平台无关性目前只是停留在理论范畴,并没有完整实现。不过现在已经有.Net部分跨平台实现,例如Mono项目、通过Xamarin也可以在Android和Ios中使用C#)
2、性能提升
这里暂且用Java字节码和IL做比较,IL总是即时编译,而Java字节码常常是解释性的,在运行应用程序时,把Java字节码转换为内部可执行代码的过程会导致性能的损失。
3、编译运行速度快
IL是即时编译,又叫JIT编译(只编译调用部份的代码,编译一次过后,得到的本地可执行程序就存储起来,下次运行时就不用再次编译),这个过程要比一开始就编译整个应用程序的代码效率高。还有一点是因为编译过程的最后一部分是在运行时进行的,JIT编译器会准确的知道程序运行在什么处理器上,可以利用处理器提供的一些特性或者一些机器指令来优化最后的可执行代码。传统的编译器是在发布之前编译为本地机器可执行代码,所以无法针对特定处理器做代码优化,这也解释了为什么托管IL代码和本地机器代码的执行速度一样快。
未完待续...
标签:
原文地址:http://www.cnblogs.com/Pliang/p/5366305.html