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. 利用“参数赋值”防范SQL注入漏洞攻击

    <<年轻,无权享受>————送给每一个看到此文的同僚们 在这无精打采的炎夏 我躺在阳台上房东的旧沙发 回想几个月来遇到的问题 我不禁内心开始慌张喘着粗气 还有大把时间去打拼 没有到只 ...

  2. NSString字符串类型-学习总结

    1.字符串的创建 (1)创建常量字符串 NSString *str = @"This is a String"; //str是变量名 (2)创建空的字符串,给字符串赋值 NSStr ...

  3. Xcode快捷键 ---- 提高效率

    Mac中主要有四个修饰键,分别是Command,Control,Option和Shift.     1. ⌘ + L 搜索行数,输入行数,调到指定行数   2.⌘ + shift + O 查询flie ...

  4. Array.prototype.sort()

    sort() 方法对数组的元素做原地的排序,并返回这个数组.默认按照字符串的Unicode码位点(code point)排序. 语法 arr.sort([compareFunction]) 参数 co ...

  5. (四)CodeMirror - API

    内容相关 cm.getValue() cm.setValue() cm.getRange() editor.getRange({line:1},{line:2}) // 获取内容块字符 cm.repl ...

  6. python进行base64编解码

    [转] 直接上代码 import base64 fin = open(r"D:\2.zip", "rb") fout = open(r"D:\2.x. ...

  7. Altium Designer 生成 Mach3 G代码的程序

    Altium Designer做PCB设计,还是很方便的,最近头脑发热,在网上买了一套CNC机床,用来做钻孔用,但是翻来翻去,基本上所有的软件都是铣削功能,而且很多软件很复杂.翻了好几天,发现没有什么 ...

  8. CSS3 transition 动画过度属性

    <!DOCTYPE html> <html> <head> <style>  div { width:100px; height:100px; back ...

  9. Learning Docker--chapter 1

    CONTENTS: (1) An introduction to Docker (2) Docker on Linux (3) Differentiating between containeriza ...

  10. AFNetworking 使用 核心代码

    ///////////////////////////以前用法///////////////////////////////////////////////////////////// //使用AFH ...