CLR执行模型《CLR via c#》第一章

这是我看《CLR via c#》第四版的一些小笔记和总结,如有不对的地方,欢迎指出。

《CLR via c#》第一章CLR的执行模型讲的是如何将源代码生成为一个应用程序,或者生成为一组可重新分发的组件(文件)- 这些组件(文件)包含类型(类和结构等),解释了应用程序如何执行。

CLR(common language runtime ,公共语言运行时),顾名思义,它是一个可以支持多种语言的“运行时”。

通常我们c#程序的执行过程是

CLR的JIT(即时编译器)把IL代码编译成机器指令。

NGen.exe工具将程序集的IL代码编译成本机代码,并将这些代码保存到一个磁盘中。在运行加载程序集时,CLR自动判断是否存在运行该程序集的预编译版本。使用NGen.exe工具虽然表面性能比较好,但因为它没有像JIT一样优化代码,所以在选择使用时,应该注意。

CTS(common type system ,通用类型系统)是用来描述类型的定义和行为。CTS是定义类的一种规范,它规定了一个类型可以包含零个或者多个成员,同时还指定了类型可见性规则以及类型成员的访问规则,除此之外,CTS还为类型继承,虚方法,对象生存期等定义了相应的规则。

面向CLR的语言无论是用哪种“代码的语言”最后的“代码的行为”都是一样的,因为最终都是由CLR的CTS来定义类型的行为。

CLS(common language specification,公共语言规范)详细定义了一个面向CLR语言的共有的最小功能集(语法规则)。一般来说,你的代码只要符合了CLS就能实现跨语言访问。

原文地址:https://www.cnblogs.com/yzw-carrie/p/5626965.html