1)CTS通用类型系统(Common Type System)

CTS不但实现了COM的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展。
任何以.NET平台作为目标的语言必须建立它的数据类型与CTS的类型间的映射。
所有.NET语言共享这一类型系统,实现它们之间无缝的互操作。该方案还提供了语言之间的继承性。
例如,用户能够在VB.NET中派生一个由C#编写的类。我们可以将CTS 看成是所有.NET 语言的superset (union),
而符合CTS 的各种不同的语言,其实都只是CTS 的subset (intersection)。这些语言所写出来的程序,
如果想要有最佳的相容性,以便互相调用(invoke) 或继承,这些语言之间就必需取得一个共同的subset,
有共同遵守的规范,这就是CLS 。

2)CLS通用语言规范(Common Language Specification)

很显然,编程语言的区别不仅仅在于类型。例如,一些语言支持多继承性,一些语言支持无符号数据类型,
一些语言支持运算符重载。用户应认识到这一点,因此.NET通过定义公共语言规范(CLS:Common Language Specification),
限制了由这些不同引发的互操作性问题。CLS制定了一种以.NET平台为目标的语言所必须支持的最小特征,
以及该语言与其他.NET语言之间实现互操作性所需要的完备特征。认识到这点很重要,
这里讨论的特征问题已不仅仅是语言间的简单语法区别。例如,CLS并不去关心一种语言用什么关键字实现继承,
只是关心该语言如何支持继承。CLS是CTS的一个子集。这就意味着一种语言特征可能符合CTS标准,但又超出CLS的范畴。
例如:C#支持无符号数字类型,该特征能通过CTS的测试,但CLS却仅仅识别符号数字类型。
因此,如果用户在一个组件中使用C#的无符号类型,就可能不能与不使用无符号类型的语言(如VB.NET)设计的.NET组件实现互操作。



3)CLR公共语言运行库(Common Language Runtime)

简单地说,CLR是CTS的实现,也就是说,CLR是应用程序的执行引擎和功能齐全的类库,该类库严格按照CTS规范实现。
作为程序执行引擎,CLR负责安全地载入和运行用户程序代码,包括对不用对象的垃圾回收和安全检查。
在CLR监控之下运行的代码,称为托管代码(managed code)。

参考:《.NET分布式编程——C#篇》

最新文章

  1. 利用Docker技术实现UDP广播效果(网络编程python版)
  2. Redis高可用分布式内部交流(九)
  3. 《简明python教程》笔记一
  4. OpenGl在VS中的配置
  5. Python学习手册(1入门知识-数据类型)
  6. three.js运动
  7. wpf 自定义消息框
  8. basic use of sidekiq
  9. 网站图片优化-解码JPEG
  10. .NET验证码控件(美观 易用)
  11. Android-多平台分享(新浪微博)
  12. C++中变量自动初始化的问题
  13. solr中重跑索引
  14. Learning from the CakePHP source code - Part I
  15. JAVA 并发(待补全!)
  16. 线程池ThreadPoolTaskExecutor配置说明
  17. LeetCode--035--搜索插入位置(java)
  18. (转)java程序员进入名企需要掌握哪些,立一个flag
  19. EntityFramework安装失败
  20. sqoop 使用笔记

热门文章

  1. CABasicAnimation动画
  2. 关于Miller-Rabin与Pollard-Rho算法的理解(素性测试与质因数分解)
  3. vue/cli的目录结构说明
  4. SQLServer、Mysql、Oracle 创建、删除用户和授予用户权限
  5. Oracle 获取表注释和列注释
  6. CoaXPress 接口相机的控制方法--1
  7. Solution -「国家集训队」「洛谷 P2619」Tree I
  8. 【ybtoj】二分算法例题
  9. Redis 忽然变慢了如何排查并解决?
  10. 当TIME_WAIT状态的TCP正常挥手,收到SYN后…