《CLR via C#》读书笔记 之 类型和成员基础
第六章 类型和成员基础
2013-02-27
6.2 类型的可见性
6.3 成员的可访问性
6.6 组件、多态和版本控制
6.2 类型的可见性
类有两种可见性:
(1) public,对所有程序集中的代码可见。
(2) internal,仅对定义它的程序集中的代码可见,对其它程序集中的代码不可见。
注:如果没有显式声明类的可见性,C#编译器默认设置为internal。
6.3 成员的可访问性
表1 成员的可访问性
CLR术语 |
C#术语 |
描 述 |
Private |
private |
成员只能由定义该成员的类型中的方法或者该类型的所有嵌套类型中的方法访问 |
Family |
protected |
成员只能由定义该成员的类型中的方法、该类型的所有嵌套类型中的方法或者该类型的一个派生类型(与程序集无关)的方法访问 |
Family和 |
(不支持) |
成员只能由定义该成员的类型中的方法、该类型的所有嵌套类型中的方法或者同一程序集中定义的该类型的所有派生类型中的方法访问 |
Assembly |
||
Assembly |
internal |
成员只能由定义该成员的程序集中的方法访问 |
Family或 |
protected internal |
成员可以由定义该成员的类型的所有嵌套类型、所有派生类型(与程序集无关)的方法或者定义该成员的程序集中的所有方法访问 |
Assembly |
||
Public |
public |
成员可以由所有程序集的所有方法访问 |
6.6 组件、多态和版本控制
表2 C#关键字及其对组件版本控制的影响
C#关键字 |
类 型 |
方法/属性/事件 |
常量/字段 |
abstract |
表示该类型不能构建实例 |
表示在构建派生类型的实例之前派生类型必须重写并实现这个成员 |
(不允许) |
virtual |
(不允许) |
表示这个成员可以由派生类型重写 |
(不允许) |
override |
(不允许) |
表示派生类型重写了基础类型的成员 |
(不允许) |
sealed |
表示该类型不能用作基础类型 |
表示这个成员不能被派生类型重写,该关键字仅用于重写了虚方法的方法 |
(不允许) |
new |
应用于嵌套类型、方法、属性、事件、常量或者字段时,表示该成员与基类中类似的成员没有关系 |