这是我看《CLR via c#》第四版的一些小笔记和总结,若有不对的地方,欢迎指出。c#
《CLR via c#》第一章CLR的执行模型讲的是如何将源代码生成为一个应用程序,或者生成为一组可从新分发的组件(文件)- 这些组件(文件)包含类型(类和结构等),解释了应用程序如何执行。工具
CLR(common language runtime ,公共语言运行时),顾名思义,它是一个能够支持多种语言的“运行时”。性能
一般咱们c#程序的执行过程是优化
CLR的JIT(即时编译器)把IL代码编译成机器指令。3d
NGen.exe工具将程序集的IL代码编译成本机代码,并将这些代码保存到一个磁盘中。在运行加载程序集时,CLR自动判断是否存在运行该程序集的预编译版本。使用NGen.exe工具虽然表面性能比较好,但由于它没有像JIT同样优化代码,因此在选择使用时,应该注意。对象
CTS(common type system ,通用类型系统)是用来描述类型的定义和行为。CTS是定义类的一种规范,它规定了一个类型能够包含零个或者多个成员,同时还指定了类型可见性规则以及类型成员的访问规则,除此以外,CTS还为类型继承,虚方法,对象生存期等定义了相应的规则。blog
面向CLR的语言不管是用哪一种“代码的语言”最后的“代码的行为”都是同样的,由于最终都是由CLR的CTS来定义类型的行为。继承
CLS(common language specification,公共语言规范)详细定义了一个面向CLR语言的共有的最小功能集(语法规则)。通常来讲,你的代码只要符合了CLS就能实现跨语言访问。ci