有人能解释一下这段代码的工作原理吗?
public class Person
{
readonly List<Person> _children = new List<Person>();
public IList<Person> Children
{
get { return _children; }
}
public string Name { get; set; }
}
public static Person GetFamilyTree()
{
return new Person
{
Name = "David Weatherbeam",
Children =
{
new Person
{
Name="Alberto Weatherbeam",
Children=
{
new Person
{
Name="Jenny van Machoqueen",
Children=
{
new Person
{
Name="Nick van Machoqueen",
},
new Person
{
Name="Matilda Porcupinicus",
}
}
}
}
}
}
};
}
儿童&#39;财产是“只读”#39; (因为它没有制定者)。 &#39; GetFamilyTree&#39;函数似乎使用了一个隐式初始化程序,这对于名称&#39;物业,因为它可以在外面访问&#39;人物&#39;但是如何&#39;儿童&#39;可以在此函数中分配属性吗?
感谢您的解释。 欢呼声。
答案 0 :(得分:2)
这个有点令人困惑的对象初始化程序语法使用get
访问器检索集合,并在集合上使用公共Add
方法。它的工作原理是因为属性IList<Person>
的编译时类型具有(继承)a public Add
method并具有兼容签名(接受Person
参数)。