名称 | 说明 |
---|---|
非托管代码 | 完全按照自己的想法管理内存 ,必要时能方便地创建线程 ;例如C/C++ |
托管代码 | 可以快速生成UI ,控制COM对象和数据库 ;例如VB,C#,F#,Iron Python,Iron Ruby,中间语言汇编器(IL) |
托管模块 | PE32或PE32+头,CLR头,元数据,IL代码 |
CLR | 公共语言运行时,Common Language Runtime);是一个可由多种编程语言使用的运行时,CLR的核心功能(内存管理 ,程序集加载 ,安全性 ,异常处理 ,线程同步 )可由面向CLR的所有语言使用。 |
编译器 | 语法检查器和“正确代码”分析器 |
IL(中间语言)代码 | 又叫托管代码,中间语言(Intermediate Language) |
JIT | 要把方法的IL在运行时转换成CPU指令(又叫本机代码),这是CLR的JIT(just-in-time或者叫“即时”)编译器的职责 |
unsafe | 不安全的代码,允许直接操作内存地址,并可操作这些地址处的字节 |
CTS | Common Type System,通用类型系统 |
现在我们想想为什么要编译两次?
- 因为这样的话,无论用C#、VB、F#这些东西你都可以生成一样的包含IL代码的托管程序集,然后这个托管程序集在CLR上运行,也就是说可以混合写代码,一个C#代码可以调用VB代码的DLL,用最适合的语言做最适合的事情。
- 并且在CLR监视之下执行的IL代码因为在执行前会进行安全校验,所以会提高程序的健壮性和可靠性