访问家长';通过C#中的嵌套类型实现的私有属性

本文关键字:嵌套类型 实现 属性 通过 访问家 | 更新日期: 2023-09-27 18:01:04

C#中的嵌套类型能够访问父级的私有属性。拥有这种语言功能的具体原因是什么?在我看来,这打破了封装。如果我将嵌套类型公开,那么我就可以通过它公开父类的私有属性

可以,但只有首先将类与外部类放在同一源文件中,才能嵌套该类。

实际上,嵌套类由外部类"拥有",并且与外部类的任何其他成员一样受信任。外部类中的方法也可以公开私有属性,但您相信它不会公开,因为您拥有所有这些代码。同样,您(外部类的作者(拥有嵌套类的所有代码。如果您不想破坏嵌套类中的封装,只需避免编写会破坏封装的代码:(

访问家长';通过C#中的嵌套类型实现的私有属性

嵌套类是封装类的一部分,就像方法一样。通过它们公开私有属性不会破坏封装,就像通过方法公开私有属性一样。

C#用于访问控制的模型是,您可以在定义的类中访问任何您想要的,而且很难看到它如何以任何其他方式工作。

(IMO(嵌套类型是封闭类型的一部分,因此它应该可以访问private成员,就像该类型的任何其他部分一样。

就像您使类型的任何其他部分成为public一样,这也可能公开该类型的私有属性。

既然只有编写封闭类型的人才能编写嵌套类型,那么就没有真正的风险了?