我浏览了我的代码库,发现了 R# 为我重构的代码行。这是一个有代表性的样本:
public class A
{
public B Target { get; private set; }
public object E { get; set; }
public A()
{
Target = new B();
}
}
public class B
{
public object C { get; set; }
public object D { get; set; }
}
public static class Test
{
static A LocalA;
static void Initialize()
{
LocalA = new A
{
E = "obviously this should be settable",
Target =
{
C = "Whoah, I can set children properties",
D = "without actually new-ing up the child object?!"
}
};
}
}
本质上,初始化语法允许在不实际执行构造函数调用的情况下设置子对象的公共属性(显然,如果我Target
从 的构造函数中提取构造函数调用A
,则整个初始化会由于空引用而失败。
我已经搜索过这个,但是很难用谷歌的术语来表达。所以,我的问题是:(a)这到底是什么,以及(b)我在哪里可以在 C# 文档中找到更多关于它的信息?
编辑
看起来有人问过这个问题,但没有找到类似的文档: 嵌套对象初始化器语法