问题阐述

CTS、CLS和 CLR分别是什么意思? 专家解答

CTS、CLS和 CLR是.NET框架的 3个核心部分,下面分别对它们进行介绍。

(1)CTS CTS即通用类型系统,它定义了如何在.NET Framework运行库中声明、使用和管理类型,同时也是.NET Framework运行库支持跨语言集成的一个重要组成部分。通用类型系统主要执行以下功能: .建立一个支持跨语言集成、类型安全和高性能代码执行的框架。 .提供一个支持完整实现多种编程语言的面向对象的模型。 .定义各语言必须遵守的规则,有助于确保用不同语言编写的对象能够发生交互作用。

.NET Framework类库中的通用类型系统支持两种类别的类型,分别为值类型和引用类型,下面分别对它们进行简单介绍。

? 值类型

值类型直接包含它们的数据,值类型的实例要么在堆栈上,要么内联在结构中。值类型可以是内联的(由运行库实现)、用户定义的或枚举的。

? 引用类型

引用类型存储对值的内存地址的引用,位于堆上。引用类型可以是自描述类型、指针类型或接口类型。引用类型的类型可以由自描述类型的值来确定,自描述类型进一步细分成数组和类类型,类类型是用户定义的类、装箱的值类型和委托。图 1.1 显示了通用类型系统的一般结构。

图 1.1 通用类型系统的结构

(2)CLS

CLS 即公共语言规范,它是许多应用程序所需的一套基本语言功能。CLS 规则定义了通用类型系统的子集,即所有适用于公共类型系统的规则都适用于 CLS,除非 CLS 中定义了更严格的规则。CLS 通过定义一组开发人员可以确信在多种语言中都可用的功能来增强和确保语言的互用性。CLS 还建立了 CLS 遵从性要求,可帮助用户确定托管代码是否符合 CLS 以及一个给定的工具对托管代码(该代码是使用 CLS 功能的)开发的支持程度。

CLS 在设计上足够大,可以包括开发人员经常需要的语言构造;同时也足够小,大多数语言都可以支持它。此外,任何不可能快速验证代码类型安全性的语言构造都被排除在CLS 之外,以便所有符合 CLS 的语言都可以生成可验证的代码。

(3)CLR

CLR 即公共语言运行库,是.NET Framework 的基础,可以将其看作一个在执行时管理代码的代理,它提供了内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。

公共语言运行库用于管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统服务,这些功能是在公共语言运行库上运行的托管代码所固有的。至于安全性,则取决于包括托管组件的来源(如 Internet、企业网络或本地计算机)在内的一些因素,由于托管组件被赋予不同程度的信任,这意味着即使用在同一活动应用程序中,托管组件可能执行文件访问操作、注册表访问操作或其他须小心使用的功能,也可能不能够执行这些功能。

公共语言运行库还通过实现称为通用类型系统(CTS)的严格类型验证和代码验证基础结构来加强代码可靠性。CTS确保所有托管代码都可以自我描述。微软和第三方语言编译器生成符合 CTS的托管代码,这意味着托管代码可在严格实施类型保护和类型安全的同时使用其他托管类型和实例。

专家点评

CTS(Common Type System)是通用类型系统,主要用于解决不同语言的数据类型不同的问题,它是一种类型标准,在这个标准中不但实现了 COM的变量兼容类型,还定义了通过用户自定义类型的方式来进行类型扩展,所有以.NET平台为目标的语言通过建立本身数据类型与CTS之间的映射来实现与其他语言的数据类型的交互。 CLS(Common Language Specification)是公共语言规范,主要用于实现多种语言之间的互操作性,是公共语言运行库的子集。 CLR(Common Language Runtime)是公共语言运行库,是所有.NET应用程序运行时的环境,所有应用程序都要使用的编程基础,它如同一个支持.NET应用程序运行和开发的虚拟机。

源地址:https://zhidao.baidu.com/special/view?id=c8735a24626975510400

有时候面试题会问:string和String的区别还有int和Int32的区别?

答:string是C#的数据类型而String是CTS中的数据类型

int也是C#的数据类型而Int32是CTS中的数据类型!

转载于:https://www.cnblogs.com/sandaman2019/p/11388033.html

CTS,CLS,CLR解释相关推荐

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

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

  2. 关于python中的self,ins , cls的解释

    关于python中的self,ins , cls的解释 https://blog.51cto.com/10250691/1890078

  3. python cls_关于python中的self,ins , cls的解释

    关于python中的self,ins,cls的解释参考下面两篇博文self比较好理解,self指的是类实例对象本身(注意:不是类本身) class Person: def _init_(self,na ...

  4. .Net框架中的CLR,CTS,ClS的解释

    CLR的全称(Common Language Runtime) 公共语言运行时 可以把它理解为包含运行.Net程序的引擎 和 一堆符合公用语言基础(CLI)的类库的集合,他是一个规范的实现,我们开发的 ...

  5. CLR,CTS,CLS

    理论: CLR是.NET Framework的核心,而CTS(common Type System)和CLS(common language System)是CLR的核心.任何编程语言,如果想要在.N ...

  6. 什么是CTS CLS和CLR

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 什么是C ...

  7. CLS/CLR、c#(等语言)、托管、元数据、程序集 CLR学习第二课

    一.名称解释: CLS:common language specilication:通用语言规范: CLR:common language Runtime 公共语言运行时. 托管代码:编译的代码直接c ...

  8. oracle+函数怎么写if,Oracle NULLIF函数

    Oracle NULLIF函数 Oracle NULLIF函数语法为NULLIF(表达式1,表达式2),如果表达式1和表达式2相等则返回空值,如果表达式1和表达式2不相等则返回表达式1的结果. 注意: ...

  9. 笔记03-.NET高级技术

    第一章:各种知识点(新版) 3.索引器 索引器允许数字索引,和字符串,可以多个参数,索引器本质是方法 static void Main(string[] args){Person p1 = new P ...

  10. .NET中 ,CTS、CLS和CLR分别作何解释?

    1.CTS:通用语言系统 CTS:Common Type System 通用类型系统.Int32.Int16→int.String→string.Boolean→bool.每种语言都定义了自己的类型, ...

最新文章

  1. 中国团队 Nature 新冠论文被指图片造假,科研论文不端“何时休”
  2. 详解虚函数的实现过程之菱形继承(5)
  3. 36.rustc编译参数.txt
  4. CRM BSP里控制左右对应对齐的属性align
  5. $unit编译单元声明
  6. 使用Spring Boot和Kubernetes构建微服务架构
  7. Java方法中的参数太多,第8部分:工具
  8. JS——实现短信验证码的倒计时功能(没有验证码,只有倒计时)
  9. Screen命令让Linux shell在后台运行
  10. 杭电2066一个人的旅行(spfa)
  11. 高清成主流 十大最受用户关注摄像头
  12. 信源剩余度的计算java_冗余度计算公式
  13. 模糊照片怎么修复清晰?快来看看这两个方法
  14. OTA升级功能系列三(MD5加密)
  15. 喜闻乐见ELK(日志管理分析系统)
  16. Adversarial Semantic Hallucination for Domain Generalized Semantic Segmentation
  17. 深度解析|硬盘协议大全,终于搞明白SCSI、IDE、FC、SATA……
  18. 安装2021b报错-找不到 ‘D:\MATLAB2021b\bin\win64\hg.dll‘ 所需的资源文件 ‘toolbox/matlab/graphics/hg/hgrc.m‘
  19. 搞笑的哈佛大学精神病测试题
  20. MOSSProject 2007语言包安装和部署

热门文章

  1. DataSetProvider的Option属性
  2. 【限时免费】大千万象,“爬”你所需!老司机教你利用爬虫建造一座图书馆...
  3. lisp把多段线顶点连成表_读取多段线顶点并将顶点坐标标到数组中
  4. 数据之路 - Python爬虫 - Requests库
  5. 卓克-为什么没有动物比蓝鲸的体型大?
  6. [ActionScript 3.0] AS3.0 把图片分析成文本表现形式
  7. 【原】linux下tar解压缩问题:time stamp in the future
  8. 快速进行项目交付,实现商业价值的捷径
  9. 哎,老了之display-box
  10. 洛谷 2051 [AHOI2009] 中国象棋