CTS、CLS和CLR是.Net框架的基本概念,但往往成为程序员忽视的部分。

CLR即Common Language Runtime, 可以把CLR理解为一个包含运行.Net程序的引擎和一些符合公共语言基础结构的类库的集合。它是一个规范的CLI实现。所谓的.Net框架一般就是指公共语言运行库。

CLI公共语言基础,是微软向ECMA提交的一份语言和数据格式规范(包括了CTS,中间语言CIL、底部文件格式和元数据格式等),它是目前为止,唯一一个公共语言基础的实现版本。

CTS的全称为Common Type System 通用类型系统。定义了一个能够在CLR上运行的语言规范,需要注意的是,尽管很多语言本省不符合CTS规范,但通过加强编译器,改变语言附加规范等手段,使得许多语言能够编写出在CLR上运行的程序,比如C++

CLS公共语言规范是CTS的一个子集,它定义了希望编写在.Net平台上运行的程序的语言所需符合的最小的规范。因为.Net允许由不同语言编写的程序一起运行,所以制定出CLS规范。

CLS规范实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.Text;
[assembly: CLSCompliantAttribute(true)]
namespace example
{
public class CLS
{
private uint i; //私有成员,不违反CLS规范
public CLS()
{
i = 0;
}
static void Main(String[] args)
{
}
public uint GetI() //不符合CLS规范,uint在CLS中无定义
{
return i;
}
}
}