CLR 类修饰符
private
成员只能由同一个类(class)类型中的其他成员访问。
family
成员可由派生类型访问,不管那些类型是否在同一个程序集中。注意,许多语言(比如 C++ 和 C#)都用 protected 修饰符来标志 family。
family and assembly
成员可由派生类型访问,但这些派生类型必须在同一个程序集中定义。许多语言(比如C#和Visual Basic)都没有提供这种访问控制。当然,IL 汇编语言不在此列。
2019/11/07 追记: 在 C# 7.2 中增加了 private protected
修饰符来标志 family and assembly 。
assembly
成员可由同一个程序集中的任何代码访问。许多语言都用 internal 修饰符来标志 assembly。
family or assembly
成员可由任何程序集中的派生类型访问。成员也可由同一个程序集中的任何类型访问。C#用 protected internal 修饰符标志 family or assembly.
public
成员可由任何程序集中的任何代码访问。