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#篇》

CTS,CLS,CLR的更多相关文章

  1. 什么是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT

    什么是.NET? 起源:比尔盖茨在2000年的Professional Developers Conference介绍了一个崭新的平台叫作Next Generation Windows Service ...

  2. .Net 面试题 3C(CTS,CLS,CLR)

    1.CTS(Common Type System)通用类型系统 CTS不但实现了COM的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展.任何以.NET平台作为目标的语言必须建立它的数 ...

  3. “菜”鸟理解.NET Framework(CLI,CLR,CTS,CLS,BCL,FCL)

    既然要学.NET,就要先认识认识她,我不喜欢大段大段文字的东西,自己通过理解,画个图,来看看.NET的沉鱼落雁,闭月羞花之容. 最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基 ...

  4. 浅谈CLR CTS CLS。。。

    So  The First Is CLR CLR的全程是Common Language Runtime 公共语言运行时 可以把他理解为包含运行.net程序的引擎 和 一堆符合公共语言基础(CLI)的类 ...

  5. .NET Framework (代码库、通用类型系统CTS、CLR) 简介

    编译C#————>程序集(.exe..dll[MSIL]).元信息[数据信息].可选资源[图片.声音]) |                     | |                   ...

  6. 挑战一下吧!C#测试开发工程师英语面试题

    1. Given a rectangular (cuboidal for the puritans) cake with a rectangular piece removed (any size o ...

  7. .NET题目(收集来自网络)

    1: .NET和c#有什么区别? 答: .NET一般是指.NET FrameWork框架,是一种平台,一种技术 c#是一种编程语言,是可以基于.NET平台的应用 2: c#中的委托是什么?事件是不是一 ...

  8. C#经典面试题及答案

    1.请你说说.net 中类和结构的区别? 答:结构和类具有大体的语法,但是结构受到的限制比类多.结构不能声明默认的的构造函数,为结构的副本是编译器创建和销毁的,所以不需要默认的构造函数和析构函数,结构 ...

  9. .NET基础知识(一、认识.Net)

    参考链接:http://blog.csdn.net/shanyongxu/article/details/50849111 认识.NET平台 可能很多人问什么是.NET框架,它包含了哪些内容?为开发程 ...

随机推荐

  1. pycharm关闭pytest

    在pycharm中,如果py文件以 test 开头,则运行时会使用pytest执行,pycharm关闭pytest方式如下 File -> Settings -> Tools -> ...

  2. 微服务如何聚合 API 文档?这波秀~

    今天这篇文章介绍一下微服务如何聚合Swagger实现接口文档管理. 文章目录如下: 为什么需要聚合? 微服务模块众多,如果不聚合文档,则访问每个服务的API文档都需要单独访问一个Swagger UI界 ...

  3. 使用污点分析检查log4j问题

    摘要:log4j问题的余波还在继续,为什么这个问题潜伏了这么长时间,大家一直没有发现?这里从静态分析的角度谈下log4j问题的发现. 本文分享自华为云社区<使用污点分析检查log4j问题> ...

  4. Solution -「HDU #6566」The Hanged Man

    \(\mathcal{Description}\)   Link.   给定一棵含 \(n\) 个点的树,每个结点有两个权值 \(a\) 和 \(b\).对于 \(k\in[1,m]\),分别求 \[ ...

  5. 图计算 on nLive:Nebula 的图计算实践

    本文首发于 Nebula Graph Community 公众号 在 #图计算 on nLive# 直播活动中,来自 Nebula 研发团队的 nebula-plato 维护者郝彤和 nebula-a ...

  6. DubboSPI机制二之Dubbo中SPI初体验

    Dubbo高级之一SPI机制之JDK中的SPI - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中阐述了JDK标准的SPI,并对其应用做了相应的实践.在实际应用中,很多框架都会对其进行扩展 ...

  7. CPU平均负载率之stress模拟CPU密集型进程

    一.对CPU密集型进程进行模拟,具体如下: 第一个终端 在第一个终端运行 stress 命令,模拟一个 CPU 使用率 100% 的场景:stress --cpu 1 -- timeout 600 第 ...

  8. Spring Boot 自定义配置文件异常"expected single matching bean but found 2"

    运行环境:Spring Boot 2.5.0, IDEA 2020.3.2 异常详细信息: Injection of resource dependencies failed; nested exce ...

  9. Typora的使用教程.md

    Typora的使用教程 原创:https://home.cnblogs.com/u/cn-zhouchao 2021.12.13 一.软件的介绍 Typora 是一款由 Abner Lee 开发的轻量 ...

  10. jQuery下载安装使用教程

    一:下载jQuery 下载链接:jQuery官网 中文文档:jQuery AP中文文档 1.jQuery版本 1.x:兼容IE678,使用最为广泛的,官方只做BUG维护,功能不再新增.因此一般项目来说 ...