当前位置: 首页 > 编程语言 > C#

受保护的内部类在类中工作但不在外部工作分享

时间:2023-04-10 16:57:23 C#

C#学习教程:受保护的内部类在类内部工作但不在外部共享说,我在命名空间n中有一个名为A的类,我正在尝试创建受保护的内部类B。命名空间n{publicclassA{publicA(){}}受保护的内部类B//throwingerror{}}但是当我像这样尝试(B作为A的子类),它不会抛出错误并且成功。你能解释为什么会这样吗?namespacen{publicclassA{publicA(){}protectedinternalclassB//itsnotthrowingerror{}}}我在理论上错过了什么吗?这有点令人困惑。查看错误。命名空间中定义的元素不能显式声明为私有、受保护或受保护的内部,只允许在类外部使用内部或公共成员。您的第二个案例将类B定义为类A的成员,这就是您没有收到错误的原因。您可能会看到访问修饰符C#直接在命名空间内声明的类和结构(换句话说,不嵌套在其他类或结构中)可以是公共的或内部的。如果未指定访问修饰符,则默认为内部。一个类不能被保护,除非它在另一个类中。protected关键字只对类的成员有效。在您的第二个示例中,B类恰好是该成员。想一想:受保护的意思是:派生类可以访问这个成员。由于不存在派生命名空间这样的概念,因此protected关键字对于命名空间的成员没有任何意义。protected声明派生类型的可见性级别。在第一种情况下,您在命名空间内声明了类。命名空间没有任何多态支持,因此无法在命名空间中使用受保护的类在第二种情况下,您可以在其他类(A类)中使用它,这使得A类的所有子级都可以使用它都是可见的。任何不是封闭类型(类)成员的东西都没有受保护的意义。受保护成员仅适用于派生自包含该成员的已定义类型的成员,而您在第一个示例中缺少该类型定义。以上就是C#学习教程的全部内容:Protectedinnerclassworksinclassbutnotoutside。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请右击联系管理员删除。如需转载请注明出处: