2

对于 Private Class,我应该将我的属性声明为 Public 还是 Friend(c# 内部)?除了父类之外,任何其他类都无法访问我的私人类。

4

2 回答 2

2

一般来说,尽量保持封装完好无损。你的类之间的关系应该在“需要知道”的基础上。

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

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

  • 如果不是,是否所有其他需要知道子类的实体都在同一个项目中?如果是这样,它应该是internal

  • 如果项目外部存在需要了解子类的实体,则应该是public.

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

注意
C# 没有friend修饰符。取而代之的是,您可以使用internal, 或最相似但不太优雅的选项:InternalsVisibleTo

于 2013-12-26T09:09:37.573 回答
1

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

于 2013-12-26T09:20:26.647 回答