zoukankan      html  css  js  c++  java
  • CTS,CLS,CLR

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

  • 相关阅读:
    leecode 91. 解码方法
    leecode 166. 分数到小数
    剑指 Offer 31. 栈的压入、弹出序列
    leecode 386. 字典序排数
    LeetCode 311 稀疏矩阵的乘法
    leecode 89. 格雷编码
    leecode 79. 单词搜索
    leecode 207. 课程表
    QT -- 解决:Error: Could not decode "*.cpp" with "UTF-8"
    VS+QT -- 没有PRO文件的问题
  • 原文地址:https://www.cnblogs.com/gylhaut/p/5644928.html
Copyright © 2011-2022 走看看