常规类型系统和公共语言规范Common Type System & Common Language Specification

首先,请记住 .NET 实现对语言不可知。这不仅意味着程序员可以使用可编译为 IL 的任意语言编写代码。还意味着程序员需要能够与使用 .NET 实现上可用的其他语言编写的代码进行交互。

为透明地执行此操作,必须使用某种通用方式描所有受支持类型。这正是通用类型系统 (CTS) 的职责。其功能如下:

  • 提供面向对象的模型,支持在 .NET 实现上实现各种语言。
  • 定义处理类型时所有语言都必须遵守的一组规则。
  • 提供包含应用程序开发中使用的基本基元数据类型(如 、、 等)的库。
    CTS 将定义应支持的两种主要类型:引用和值类型。其名称表明了其定义。

值类型则相反,其中对象由其值表示。如果将值类型分配给变量,实质上就是复制对象的值。

CTS 将定义多个类型类别,每个类别均有其特定的语义和用法:

  • 枚举
  • 接口
  • 委托
    CTS 还将定义类型的所有其他属性,例如访问修饰符、有效的类型成员以及继承和重载的工作原理等。遗憾的是,有关上述任意一点的深入介绍已超出此类介绍性文章的介绍范围,但可以参阅底部的更多资源部分,获取包含这些主题的详细内容的链接。

CLS 是 CTS 的子集。这意味着,CTS 中的所有规则也适用于 CLS,除非 CLS 规则更严格。如果仅使用 CLS 中的规则生成组件(即在其 API 中仅公开 CLS 功能),则将该组件视为符合 CLS例如, 完全符合 CLS,因为它们需要对 .NET 支持的所有语言有效。

可参阅下方部分中的文档,大致了解 CLS 中的所有功能。