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