如果在实例化对象时使用对象初始值设定项,那么对象构造函数是否可以访问初始化属性?
public class ExampleClass {
public string proptery1 { get; set; }
public string property2 { get; set; }
public ExampleClass() {
if(!string.IsNullOrEmpty(property1)) {
...
}
}
}
ExampleClass exampleClass = new ExampleClass() {
property1 = "hello",
property2 = "world"
};
答案 0 :(得分:1)
集合初始值设定项调用集合的.Add方法,该方法必须为特定集合定义。在将对象传递给.Add。
之前,该对象将完全构造语法
ExampleClass exampleClass = new ExampleClass() {
property1 = "hello",
property2 = "world"
};
不显示集合初始值设定项,而是显示对象初始化。
在这里,你的构造函数将被调用,然后将调用给定属性的setter。
一个恰当的例子是
List<ExampleClass> list = new List<ExampleClass>() {
new ExampleClass() {
exampleClass.property1 = "hello";
exampleClass.property2 = "world";
}
}
事件的顺序是
List<ExampleClass>
的新实例并将其分配给 list 答案 1 :(得分:1)
不,在初始化任何属性之前调用构造函数。
您的代码:
ExampleClass exampleClass = new ExampleClass() {
property1 = "hello",
property2 = "world"
};
是
的语言糖ExampleClass exampleClass = new ExampleClass();
exampleClass.property1 = "hello";
exampleClass.property2 = "world";
答案 2 :(得分:1)
不,首先调用构造函数。对象初始化只是用于调用构造函数然后设置对象属性的语法糖。