我不知道这个问题是否足够具有描述性,但是为什么以及如何存在这种行为?:
public class Layer
{
public string Name { get; set; }
private IEnumerable<Layer> children;
public IEnumerable<Layer> Children
{
get { return this.children.Where ( c => c.Name != null ).Select ( c => c ); }
set { this.children = value; }
}
public Layer ( )
{
this.children = new List<Layer> ( ); // Fine
Layer layer = new Layer ( );
layer.children = new List<Layer> ( ); // Isn't .children private from the outside?
}
}
我可以在任何地方访问,这很好,但是由于它是私有layer.Children
的,我如何访问?layer.children
Layer layer = new Layer ( );
layer.children = new List<Layer> ( );
仅当代码在Layer
类内时才有效。如果访问私有变量是在包含类内部完成的,是否有特殊的代码来区别对待访问私有变量,即使访问是从外部进行的?
我知道使用的原因:
this.children = ...
在包含类内部,但创建新实例并从外部修改它们,即使它们仍在包含类中,这似乎不是一个好习惯。
允许这样做的原因是什么?