CLR via 随书笔记

CTS(common type system)
通用类型系统规定,一个类型可以包含零个或者多个成员,如下:
 
字段(Field):
作为对象状态一部分的数据变量。字段根据名称和类型来区分
 
方法(Method):
针对对象执行操作的函数,通常会改变对象状态。方法有一个名称,一个签名以及一个或多个修饰符。签名指定参数数量(及其顺序);参数类型:方法是否有返回值。如果有返回值,还要指定返回值类型
 
属性(prolerty):
对于调用者,属性看起来像是字段。但是对于类型的实现者,属性看起来是一个方法(或是两个方法)。属性允许在访问值之前校验输入参数和对象状态,以及或者仅在必要时才计算某个值。属性还允许类型的用户采用简化语法。最后,属性允许创建只读或只写的字段
 
事件:
事件在对象以及其他相关对象之间实现了通知机制。例如,利用按钮提供的一个事件,可在按钮被点击之后通知其他对象
 
同时CTS还指定了可见性规则以及类型成员的访问规则,例如如果将类型标记为public,任何程序集都能看见并访问该类型。但是如果标记为assembly(C#中使用internal修饰),只有同一个程序集中的代码才能看见并访问该类型,所以,利用CTS制定的规则,程序集为一个类型建立了可视边界,CLR也强制贯彻了这些规则:
private:
成员只能由同一个类型中的其他成员访问;
protected:
成员可由派生类访问,不管那些类型是否在同一程序集中。
internal:
成员可由同一个程序集中的任何代码访问
protected internal:
成员可由任何程序集中的派生类型访问,成员也可由同一程序集中的任何类型访问
public
成员可由任何程序集中的任何代码访问
原文地址:https://www.cnblogs.com/yankun1991/p/6972808.html