トップレベルのプライベート クラスは、他の型からは見えないため、あまり意味がありません。ネストされたクラスはプライベートにすることができます。
C# 言語仕様からの抜粋を次に示します。
3.5.2 アクセシビリティ ドメイン
プログラム P で宣言されているトップレベルのバインドされていない型 T (§4.4.3) のアクセシビリティ ドメインは、次のように定義されます。
- T の宣言されたアクセシビリティが public である場合、T のアクセシビリティ ドメインは、P のプログラム テキストと、それを参照するすべてのプログラムです。
- P. T の宣言されたアクセシビリティが内部である場合、T のアクセシビリティ ドメインは P のプログラム テキストです。
これらの定義から、最上位のバインドされていない型のアクセシビリティ ドメインは常に、少なくともその型が宣言されているプログラムのプログラム テキストであることがわかります。構築された型 T のアクセシビリティ ドメインは、バインドされていないジェネリック型 T のアクセシビリティ ドメインと、型引数 A1、...、AN のアクセシビリティ ドメインの共通部分です。
プログラム P 内の型 T で宣言されたネストされたメンバー M のアクセシビリティ ドメインは、次のように定義されます (M 自体が型である可能性があることに注意してください)。
- M の宣言されたアクセシビリティがパブリックである場合、M のアクセシビリティ ドメインは T のアクセシビリティ ドメインです。
- M の宣言されたアクセシビリティが内部で保護されている場合、D を P のプログラム テキストと、P の外部で宣言された T から派生した任意の型のプログラム テキストの和集合とする。M のアクセシビリティ ドメインは、アクセシビリティ ドメインの共通部分であるT と D の
- M の宣言されたアクセシビリティが保護されている場合、D を T のプログラム テキストと、T から派生した任意の型のプログラム テキストの和集合とする。M のアクセシビリティ ドメインは、T のアクセシビリティ ドメインと D の共通部分である。
- M の宣言されたアクセシビリティが内部的である場合、M のアクセシビリティ ドメインは、T のアクセシビリティ ドメインと P のプログラム テキストとの共通部分です。
- M の宣言されたアクセシビリティが非公開の場合、M のアクセシビリティ ドメインは T のプログラム テキストです。