类型是CLR的根本,所以MICROSOFT制定了一个正式的规范来描述类型的定义和行为,这就是“通用类型系统“ (Common Type System,CTS)。
CTS规范规定
1.字段
作为对象状态一部分的数据变量。字段根据名称和类型来区分。
2.方法
针对对象执行操作函数,通常会改变对象状态。方法有一个名称丶一个签名以及一个或多个修饰符。签名指定参数数量;参数类型;方法是否有返回值;如果有返回值,还要指定返回值类型。
3.属性
对于调用者,属性看起来很象字段。但对于类型的实现者,属性看起来像是一个方法或者两个方法。属性允许在访问值之前进行参数的校验等,以及在必要时计算某个值。还可以创建只读或者只写的字段。
4.事件
事件在对象以及其他相关对象之间实现了通知机制。
CTS访问规则
1.private
成员只能由同一个类中的其他成员访问
2.family
成员可由派生类型访问,不管那些类型是否在一个程序集中。注:许多语言(比如C++和C#)都用protected修饰来标识family
3.family and assembly
成员可由派生类型访问,但这些派生类型必须在同一个程序集中定义。
3.assembly
成员可由同一个程序集中的任何代码访问。许多语言都用internal修饰符来标识assembly。
4.family or assembly
成员可由任何程序集中的派生类型访问。成员也可由同一个程序集中的任何类型访问。C#用protected internal修饰符标识family or assembly.
5.public
成员可由任何程序集中的代码访问。
CTS规定一个类型只能从一个派生。
CTS规定所有类型必须从预定义的System.Object类型继承。