通过C#中的嵌套类型访问父级私有属性

Amr*_*rit 5 .net c# nested nested-class

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

Jon*_*eet 6

可以-但你只能嵌套类,如果你在同一个源文件摆在首位的外部类中得到了它.

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

  • 我很自豪我发布了与@Jon Skeet相同的东西,尽管有点不那么雄辩,只有38秒后:) (5认同)

Bre*_*ent 5

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

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