初始化列表与构造函数的调用顺序是什么?
public class MyClass {
public int MyIntegerValue { set; get; }
public MyClass() {
if(MyIntegerValue = 5) {
DoA();
} else {
DoB();
}
}
}
给定前面的代码,如果我调用
new MyClass() { MyIntegerValue = 5 }
,将执行DoA()
或DoB()
吗?如果执行了
DoB()
,是否有一种方法可以调用DoA()
而不将MyIntegerValue
作为参数传递给构造函数? 最佳答案
在这种情况下,它将执行DoB
,因为将调用第一个构造函数,并为其分配MyIntegerValue。
您的代码很简单
MyClass mc = new MyClass();
mc.MyIntegerValue = 5;
但是你可以做
private int _MyIntegerValue = 5;
public int MyIntegerValue
{
get { return _MyIntegerValue; }
set { _MyIntegerValue = value; }
}
要么
public MyClass(int _myIntegerValue)
{
MyIntegerValue = _myIntegerValue;
if (MyIntegerValue == 5)
DoA();
else
DoB();
}
像这样打电话
new MyClass(5);
关于c# - 初始化程序列表和构造函数调用顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27995476/