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()]

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

NET基础课--NET的一些概念0的更多相关文章

  1. ZAM 3D 制作简单的3D字幕 流程(二)

    原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...

  2. 探索 OpenStack 之(10):深入镜像服务Glance

    本篇博文来探讨下镜像服务Glance. 0.  基本概念 0.1 基本功能 Glance提供REST API来支持以下镜像操作: 查询 注册 上传 获取 删除 访问权限管理 0.2 Glance RE ...

  3. qt中文乱码问题

    首先,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString. 很简单的问题,"我是中文&qu ...

  4. Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)

    文章来源:http://blog.csdn.net/brave_heart_lxl/article/details/7186631 以下是dbzhang关于qt中文乱码问题原因的阐述,觉得不错: 首先 ...

  5. Java 并发 线程同步

    Java 并发 线程同步 @author ixenos 同步 1.异步线程本身包含了执行时需要的数据和方法,不需要外部提供的资源和方法,在执行时也不关心与其并发执行的其他线程的状态和行为 2.然而,大 ...

  6. Ubuntu设置程序开机自启或者开机禁止加载

    先说说ubuntu,它有运行级别这个概念 0:停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system 3:完全多用户 5:图形化 6:重启 例子:按指定顺序.在指 ...

  7. Django+xadmin打造在线教育平台(六)

    九.课程章节信息 9.1.模板和urls 拷贝course-comments.html 和 course-video.html放入 templates目录下 先改course-video.html,同 ...

  8. rsa加密算法及js的JSEncrypt实现前端加密

    最近的项目中用到了rsa加密算法,在实现了相关功能之后,我去了解了一下rsa相关原理,于是就写了这篇博客啦. 首先介绍一下什么是rsa加密算法: 作为非对称加密算法的老大,rsa号称是地球上最安全的加 ...

  9. Numpy三维数组的转置与交换轴

    二维数组的转置应该都知道,就是行列交换 而在numpy中也可以对三维数组进行转置,np.T 默认进行的操作是将0轴与2轴交换 本文主要对三位数组轴交换的理解上发表本人的看法. a = np.array ...

随机推荐

  1. HTML与CSS入门——第十一章  在网页中使用图像

    知识点: 1.在网页上放置图像的方法 2.用文本描述图像的方法 3.指定图像高度和宽度的方法 4.对齐图像的方法 5.将图像转换为俩接的方法 6.使用背景图像的方法 7.使用图像映射的方法 11.1 ...

  2. css重点

    1.CSS的盒子模型? (1)两种, IE 盒子模型.标准 W3C 盒子模型:IE 的content部分包含了 border 和 pading; (2)盒模型: 内容(content).填充(padd ...

  3. 分享一个在线制作GIF格式loading图片的好网址

    等待您寻找惊喜:http://preloaders.net/

  4. respondsToSelector的使用

    - (BOOL)respondsToSelector:(SEL)aSelector; 用来判断是否有以某个名字命名的方法 +(BOOL) instancesRespondToSelector: sel ...

  5. 基于webrtc的多人视频会话的demo运行程序

    服务端程序: 该服务程序为windows平台下的程序,使用libevent书写,并集成了UDP的中转程序.(该服务器程序不能和客户端程序运行在同一台PC机电脑,不然服务器程序和客户端程序会抢占同一UD ...

  6. Keil C减小代码编译量大小的方法(gai)

    keil-C减小代码编译大小的方法整理 方法一:(通过优化代码减小) 1.1少做乘除运算,使用左/右移位来实现乘除 Eg ,普通:a = 0x80*4: 优化:a = 0x80<<2: 1 ...

  7. Truncate Table user

    Truncate Table   百科名片 Truncate是一个能够快速清空资料表内所有资料的SQL语法.并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用. 目录 语法 参数 注释 示例 ...

  8. C# ITextShap 生成PDF 下载

    using iTextSharp.text; using iTextSharp.text.pdf; //创建 Document Document pdfDoc = new Document(new R ...

  9. 一则 Mysql 建表语句

    DROP TABLE IF EXISTS `nuvue`; CREATE TABLE `nuvue`( `id` ) UNSIGNED NOT NULL AUTO_INCREMENT, `status ...

  10. 制作 leanote docker 镜像

    leanote 使用 mongodb 存储数据,如果把 mongodb 单独做成一个镜像,初始化数据时比较麻烦,所以最后还是决定把 mongodb 和 leanote 放到同一个镜像里边. docke ...