C#为什么以及如何允许在同一个包含类中访问类本身外部的私有变量?我不知道这个问题是否足够描述,但是为什么以及如何存在这种行为?公共类层{公共字符串名称{得到;放;私有IEnumerable孩子;publicIEnumerableChildren{get{returnthis.children.Where(c=>c.Name!=null).Select(c=>c);设置{this.children=value;}}publicLayer(){this.children=newList();//精细层layer=newLayer();layer.children=new列表();//不是。孩子从外面隐私?我可以从任何地方访问layer.Children,这很好,但是我如何访问layer.children因为它是私有的?图层layer=newLayer();layer.children=new列表();仅当代码位于Layer类中时才有效。如果访问是在包含类内部完成的,是否有特殊代码来处理访问私有变量,即使访问是从外部进行的?我知道使用的原因:this.children=...在包含类内部,但创建新实例并从外部修改它们并不是一个好习惯,即使它们仍在包含类中。允许这样做的原因是什么?请参阅C#语言规范的第3.5.1节。相关文本是这样的:private,通过在成员声明中包含private修饰符来选择。private的直观含义是“访问仅限于包含类型”。请注意,修饰符与类型相关,而不是实例。然后在第3.5.2节中进一步解释了一些规则:直观地,当访问类型或成员M时,将评估以下步骤以确保允许访问:这是一种常见的设计。假设编写该类的人知道如何正确使用它并且理解直接访问私有成员的意义。因此,访问同一个类的其他实例的私有成员通常是可行的。如果您熟悉C++友元构造,就好像同一类的实例彼此是友元(尽管C#没有友元的正式概念)。这适用于C#和Java,这是我知道的两种语言。我敢打赌许多其他语言也允许这样做(有人想插入吗?)请记住私有访问修饰符说私有成员只能在类的主体或声明它们的结构中访问。这个描述令人困惑,但它清楚地表明限制是在类上而不是在对象级别上。在这种情况下,该层仍在类内部。这在之前已经讨论过。我们可以使用对象访问私有变量吗?C#学习教程就是这样:当C#位于同一包含类中时,为什么以及如何允许访问类本身外部的私有变量?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
