C#/.NET CTS和CLS:公共类型系统和公共语言规范
网址引用:http://c.biancheng.net/view/3053.html
.NET 框架最主要的两个组成部分是 CLR 和框架类库,而 CLR 最主要的两个组成部分是 CTS(公共类型系统)和 CLS(公共语言规范)。
简单地说,CTS 就是计算机语言的一种语法和规范。
例如,它允许接口、类、结构、枚举这些类型的存在,并且,规定了每种类型可以或不可以包含什么成员。
如果 C# 没了语法,那就没有类,没有接口,变成了伪码。
CTS 是微软制定的一套标准化语法。它规定了一套约束,就像英语规定所有的字词都是由 26 个字母组成的一样,服从这套语法的语言都可以看成是英语(或英语的某种方言),例如中古英语、现代英语都是英语,而德语字母并非英语字母,所以它不是英语。
同理,所有服从 CTS 的语言,都可以看成 .NET 框架的语言。
CTS 定义了类型,类型指的是集合{类、结构、接口、枚举、委托}中的任意一个成员。
.NET 框架的众多语言各自实现了 CTS 的一部分功能。
做一个不太恰当的类比,C# 可以被认为是“美国英语”,F# 是“英国英语”,而 VB 是“印度英语”。
他们是英语的各种方言。他们共享一部分相同的词汇,但也各有各的特点。
例如颜色在英国英语中的拼写是 colour,美国英语则是color。
.NET 框架的众多语言都只实现 CTS 的一小部分功能,这部分功能称为 CLS(Common Language Specification,公共语言规范)。
这是这些语言(的程序集)可以相互使用的前提。
如果你创建一个新语言,但不满足 CLS 的要求,那你的语言就不能被其他 .NET 框架的语言(的程序集)使用。
下图演示了 CTS 和 CLS 的关系。如果你想实现一个.NET 框架语言,你最少必须实现 CLS 中的功能。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-06-10 COM笔记-类厂
2021-06-10 COM笔记-CoCreateInstance
2021-06-10 COM笔记-COM库函数
2021-06-10 COM笔记-Widows 注册表
2021-06-10 COM笔记-关于GUID
2021-06-10 COM笔记-关于HRESULT
2021-06-10 COM笔记-动态链接