对于 Private Class,我应该将我的属性声明为 Public 还是 Friend(c# 内部)?除了父类之外,任何其他类都无法访问我的私人类。
2 回答
一般来说,尽量保持封装完好无损。你的类之间的关系应该在“需要知道”的基础上。
由于我不熟悉您的应用程序设计,我确信我过于简单化了,但我会问自己以下问题:
父类是唯一需要知道子类的类吗?如果是这样,它应该是
private
。如果不是,是否所有其他需要知道子类的实体都在同一个项目中?如果是这样,它应该是
internal
。如果项目外部存在需要了解子类的实体,则应该是
public
.
至于属性。如果您决定拥有子类private
,则制作属性是没有用的public
。
唯一可以拥有类实例的对象是父类,它在同一个项目中,因此internal
对于属性应该足够了。
注意
C# 没有friend
修饰符。取而代之的是,您可以使用internal
, 或最相似但不太优雅的选项:InternalsVisibleTo
由于您的类(嵌套类)是private
唯一可以访问它的类,因此它的容器(基类或父类)。在这种情况下public
or internal
(Friend
在 VB 中) 没有任何区别,因为唯一可以访问嵌套类的是它的父类。一般来说,如果有一天您想将访问修饰符更改为,public
那么现在就可以预见它并在 和 之间进行internal
选择public
。它很简单,如果您希望嵌套类的成员仅在其定义的程序集中可见,则使用internal
否则考虑使用public
.