在类型初始值设定项中指定与其父值相同的子值

时间:2012-09-17 11:31:18

标签: c#-4.0 c#-3.0 typeinitializer

我有一个类

public class Person
{
    public string Name{ get; set; }
    public string Address{ get; set; }
    public List<Person> Children{ get; set; }
}

这里我有一个属性儿童名单。

现在我正在使用类型初始化器(如

)创建此类实例的数组
var persons = new []{
    new Person{ Name="Some Name", Address = "Some Address" },
    new Person{ Name="Some Name 2", Address = "Some Address 2", Children = new List<Person>{
          new Person { Name = "Some Name 3",
                ** Address = <here I want its parent Address>  "Some Address 2" **}
       }
    }
};

所以,我的问题是我正在创建一个Person的对象,我在其中分配了它的Address属性,现在我想要这个属性值来分配它的子节点,但我找不到像我们这样做的方法来获取它的父节点通过此关键字获取其定义中的类成员。

1 个答案:

答案 0 :(得分:1)

C#没有简单的方法来做到这一点。 Person对象及其上述子对象之间的父子关系不是由语言强制执行或提供的。解决上述问题的最简单方法是将地址存储在变量中并引用它。

string address = "Some Address 2";
var persons = new []{
    new Person{ Name="Some Name", Address = "Some Address" },
    new Person{ Name="Some Name 2", Address = address, 
        Children = new List<Person>{
              new Person { Name = "Some Name 3", address }
       }
    }
};

或者,Person对象可以在类似数据的排列中将任何子节点的地址设置为自身。