顶级私有类没有多大意义,因为它们对其他类型是不可见的。允许嵌套类是私有的。
以下是 C# 语言规范的摘录:
3.5.2 可访问域
在程序 P 中声明的顶级未绑定类型 T(第 4.4.3 节)的可访问域定义如下:
- 如果声明的 T 的可访问性是公共的,则 T 的可访问域是 P 的程序文本和任何引用的程序
- P. 如果声明的 T 的可访问性是内部的,则 T 的可访问域是 P 的程序文本。
从这些定义可以看出,顶级未绑定类型的可访问域始终至少是声明该类型的程序的程序文本。构造类型 T 的可访问域是未绑定的泛型类型 T 的可访问域与类型参数 A1、...、AN 的可访问域的交集。
在程序 P 中以类型 T 声明的嵌套成员 M 的可访问域定义如下(注意 M 本身可能是一个类型):
- 如果 M 声明的可访问性是公共的,则 M 的可访问域是 T 的可访问域。
- 如果声明的 M 的可访问性是受内部保护的,则令 D 是 P 的程序文本和从 T 派生的任何类型的程序文本的并集,T 是在 P 外部声明的。M 的可访问域是可访问域的交集T 与 D。
- 如果声明的 M 的可访问性受到保护,则令 D 是 T 的程序文本和从 T 派生的任何类型的程序文本的并集。M 的可访问域是 T 的可访问域与 D 的交集。
- 如果声明的 M 的可访问性是内部的,则 M 的可访问域是 T 的可访问域与 P 的程序文本的交集。
- 如果 M 声明的可访问性是私有的,则 M 的可访问域是 T 的程序文本。