【发布时间】:2017-05-02 02:37:17
【问题描述】:
对于此类设置。
public class X
{
public Y YInstance;
public X()
{
YInstance = new Y();
}
}
public class Y
{
public long Z;
}
我有这个代码。
var x = new X();
x.YInstance.Z = 1;
Resharper 提示使用对象初始化器,它将我的代码转换为此。
var x = new X { YInstance = { Z = 1 } };
我熟悉使用方括号填写属性的普通对象初始化,但我不确定这是做什么的。查看 IL,它似乎没有使用新的匿名类设置 YInstance,这是我的第一个猜测。这也不会是与以前相同的功能,这对于 Resharper 的建议来说会很奇怪。
我只是在寻找一个语言特征关键字来查找或一个简单的解释。
【问题讨论】:
-
"IDE0017 C# 对象初始化可以简化"
-
R# 已经为您提供了要查找的关键词:“object initializer”。
-
我只想指出,对象初始化器上的 msdn 没有提到在不创建新对象的情况下使用表单。 msdn.microsoft.com/en-us/library/bb384062.aspx
标签: c#