可一类的保护in.NET?
为什么是/不是这可能吗?
Answer 1:
是的,你不能让他们顶层类,它们必须是内部类
public class Outer
{
protected class Foo
{
}
}
这是罚款,这意味着允许查看富的唯一类外的子类
class X
{
// 'Outer.Foo' is inaccessible due to its protection level
private void Flibble(Outer.Foo foo)
{
}
}
class X : Outer
{
// fine
private void Flibble(Outer.Foo foo)
{
}
}
请注意,您不能在C#中声明任何外部类为私有,受保护(或受保护的内部),因为外部级类的访问修饰符定义相对于其他组件自己的知名度。 具体可见仅(或通过InternalsVisibleTo朋友)或组件的外部的组件内。
因此,尽管公众/内部标识符这里使用的一致性真的IL的状态简直是“公开”或“非公开”(作为Reflection.Emit的标志显示 )
Answer 2:
protected
可视性用来表示“可见派生类”。 这使得对事物意义上的类中,但通常具有在类级别没有任何意义。
唯一的例外,这是一个内部类,其中保护的可见性意味着派生类将有机会获得内部类。
Answer 3:
是的,我们不能让他们顶层类,它们必须是内部类
Answer 4:
受保护的类不能被定义里面namespace.It只能被声明为嵌套类。 它可以其他嵌套类中被实例化,并可能通过其他嵌套类被继承,它可以从其他嵌套类继承。
父类的被保护的成员可由嵌套类以及类从父类(派生类或子类)继承来访问。
文章来源: Protected Classes in .NET