1
今天早上我在构建的应用程序中遇到了一个有趣的情况。尽管我以另一种方式解决了这个问题,但我很想知道答案是什么。使用对象初始化器时的执行顺序
假设我们有以下的情况:
public class SomeDependency
{
public string SomeThing { get; set; }
}
public class SomeClass
{
public SomeDependency Dependency { get; }
public SomeClass() : this(new SomeDependency) { }
public SomeClass(SomeDependency dependency)
{
Dependency = dependency;
}
}
现在有初始化这个类有2种方法:
我们只能说:
var x = new SomeClass();
当然,这将会给我们预期的情况。但是,如果我们这样做:
var x = new SomeClass
{
Dependency = new SomeDependency { SomeThing = "some random string" }
};
我们使用无参数的构造函数在后者的情况,但我们确实给Dependency
通过对象初始值,因此,我的问题:
将Dependency
由该this(new SomeDependency())
被覆盖呼叫?
*是否将依赖项被this(new SomeDependency())调用覆盖?*相反。首先构造函数完全运行,然后完成字段/属性初始化('Dependency =')。对象初始化程序是纯同义糖。它在* new'SomeClass'返回新对象后完成。 – xanatos