NET基础课--NET的一些概念0

0.CIL--公共中间语言

VC++:经过预编译,编译,汇编和链接生成本地可执行代码,支持它运行的是OS和本地cpu指令集。

C#:    在.net框架下类似c#的高级语言经过编译生成的文件叫程序集,后缀名.dll 和 .exe。程序集由CIL语言描述。利用IL DASM查看程序集

          时你会发现vb和c#编写编译生成的CIL代码是一致的。由于程序集运行受NET运行时管理所以CIL代码也叫托管代码。

注意:CIL是一种语言,可以直接写代码,只不过比c#低级一些,编写起来效率低。

1.BCL--基础类库

举例:新建一个控制台项目,删除引用中所有的引用,你会发现你的helloword照样可以打印, 这是因为console类定义在基础类库中,所属程序集是mscorlib.dll.这个程序集总是自动引用且和CIL语言紧密关联。
那string类型呢?string在代码中蓝色呈现你猜测应该是c#关键字即内置类型,但是按下f12你会发现它定义在mscorlib中。
所以才有这样的对应关系:c#中关键字是CIL类型的别名。
CIL类型                     c#关键字
System.Byte              byte

    基元类型:编译器直接支持将语言关键字类型转换为CIL类型的类型如int  byte等。

2.FCL--框架类库

BCL是FCL的一部分。

FCL分层:最内层有BCL的大部分组成,对.NET运行时和CIL等进行支持,例如 基元类型,线程 应用程序域等

             中间一层对系统功能的封装,例如文件系统,网络连接,图形图像等

             最外层是各种类型的应用程序 如wpf,wcf,asp.net等。

3.CTS--公共类型系统

   CTS是CIL语言的规范或规则定义。CIL实现了CTS的全部功能。c#只实现了CTS的一部分功能。

4.CLS--公共语言规范

   不同语言编写的程序集互操作的基础规范。可以使用特性CLSCompliant应用在类上,以便编译时检查程序集是否符合CLS。

    特性:[assembly:CLSCompliant()]

   如果你是组件开发人员建议遵守这个规范来开发组件。