访问私人类中的财产级别

时间:2013-12-26 08:58:17

标签: c# .net vb.net access-modifiers access-levels

对于私人班级,我应该将我的财产声明为公共或朋友(c#内部)? 除了父类之外,任何其他类都无法访问我的私有类。

2 个答案:

答案 0 :(得分:2)

通常,尽量保持封装完整。你的课程之间的关系应该是“需要知道”的基础。

由于我不熟悉您的应用程序设计,我确信我过于简单化,但我会问自己以下问题:

  • 父类是唯一需要知道子类的类吗?如果是,那应该是private

  • 如果没有,那么需要了解子类的所有其他实体是否在同一个项目中?如果是,那应该是internal

  • 如果项目外部的实体需要了解子类,则应为public

至于属性。如果您决定使用子类private,则无法使用属性public 唯一可以拥有该类实例的对象是父类,它位于同一个项目中,因此internal应该足够用于属性。

注意
C#没有friend修饰符。相反,您可以使用internal或最相似但更不优雅的选项:InternalsVisibleTo

答案 1 :(得分:1)

由于您的类(嵌套的)是private,唯一可以访问它的是它的容器(基类或父类)。在这种情况下,publicinternal(VB中的Friend)没有任何区别,因为唯一能够访问嵌套类的人是它的父级。 一般情况下,如果有一天您想要将访问修饰符更改为public,那么现在可以预见它并在internalpublic之间进行选择。如果您希望只在其定义的程序集内部看到嵌套类的成员,那么它很简单,那么请使用internal,否则请考虑使用public