对象初始化式的这种变体在哪里记录?

本文关键字:在哪里 记录 初始化 对象 | 更新日期: 2023-09-27 18:02:52

我在MSDN:对象和集合初始化器中没有看到任何解释。具体来说,我已经注意到可以使用对象初始化器来设置子类型的属性,而不必重新创建子类型本身。

语法本身与我对MSDN页面的理解不匹配。我知道我可以使用对象初始化器来设置一个初始化对象的字段,但不知道哪里有文档说明可以设置一个字段的字段。

这对我来说是合法的。我们可以用bt.subType.subTypeValue=5;完成同样的事情。

class BasicSubType
{
    public int subTypeValue;
}
class BasicType
{
    public BasicSubType subType {get;private set;}
    public BasicType()
    {
        subType = new BasicSubType();
    }
}
void Main()
{
    BasicType bt = new BasicType{subType={subTypeValue=5}};
}

对象初始化式的这种变体在哪里记录?

我不确定您在用户文档中哪里可以找到它,但是在语言规范中对象初始化器部分中专门解决了它:

在等号后面指定对象初始化式的成员初始化式是嵌套对象初始化式,即嵌套对象的初始化式。与向字段或属性赋值不同,嵌套对象初始化器中的赋值被视为对字段或属性成员的赋值。嵌套对象初始化器不能应用于值类型的属性,也不能应用于值类型的只读字段。

本文也是c# 3.0概述的一部分。