2016-11-03 86 views
1

有人能解释我这个代码的工作原理吗?没有显式构造函数和只读属性的C#类

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", 
          } 
         } 
        } 
       } 
      } 
     } 
    }; 
} 

'儿童'属性是'只读'(因为它没有设置)。 'GetFamilyTree'函数似乎使用隐式初始值设定项,它可以在'Person'之外访问'Name'属性,但是如何在此函数中指定'Children'属性?

谢谢你的解释。 干杯。

+0

谢谢dbc! –

回答

2

这有点混乱对象初始化语法检索get访问的收集和使用上收集公众Add方法。它的工作原理是因为IList<Person>的编译时类型具有(继承)a public Add method与兼容的签名(需要参数Person)。

+0

谢谢Jeppe! –

相关问题