protected有人可以解释一下 C# 中的和protected internal修饰符之间的区别吗?看起来他们的行为是相同的。
protected
protected internal
“protected internal”访问修饰符是“protected”和“internal”修饰符的 联合 。
来自MSDN,访问修饰符(C# 编程指南):
受保护 :
类型或成员只能由同一类或结构中的代码或从该类派生的类中的代码访问。
内部 :
类型或成员可以由同一程序集中的任何代码访问,但不能从另一个程序集中访问。
受保护的内部 :
类型或成员可以被声明它的程序集中的任何代码访问, 或者 从另一个程序集中的派生类中访问。来自另一个程序集的访问必须在从声明受保护内部元素的类派生的类声明中进行,并且必须通过派生类类型的实例进行。
请注意 :protected internal表示“protected或internal”(同一程序集中的任何类,或任何派生类 - 即使它在不同的程序集中)。
internal
…为了完整性:
私人 :
类型或成员只能由同一类或结构中的代码访问。
公开 :
类型或成员可以由同一程序集或引用它的另一个程序集中的任何其他代码访问。
私人保护 :
访问仅限于从当前程序集中的包含类派生的包含类或类型。 ( 自 C# 7.2 起可用 )