一直想弄清楚为什么我无法使用属性值初始化新对象。可能忽略了一些非常基本的东西 - 但却无法理解它是什么。希望我能用这样的方式来表达我的问题,即它对其他人也有用。
在我的Main类中,我有以下代码调用我在另一个类中定义的自定义用户控件。
BallUc ball = new BallUc {
Number = 100
};
MessageBox.Show(ball.Number.ToString()); //this works and returns '100'.
我的BallUc代码的相关部分;
private int _number { get; set; }
public int Number{
get { return _number ; }
set { _number = value; }
}
public BallUc() {
InitializeComponent();
MessageBox.Show(this.Number.ToString()); //this doesn't work and returns '0'.
}
我需要数字变量来计算BallUc类中的一些函数。希望我的问题很清楚,如果需要澄清,请告诉我。提前感谢您的时间!
答案 0 :(得分:3)
object initializers的属性赋值在构造函数执行后完成。如果您需要在构造函数中使用该值,则必须将其作为参数传递:
public BallUc(int number)
{
InitializeComponent();
Number = number;
MessageBox.Show(Number.ToString());
}
然后像这样实例化你的控件:
var ball = new BallUc(100);
答案 1 :(得分:1)
在您在属性
上设置值之前执行构造函数答案 2 :(得分:0)
您可以通过构造函数属性传递此参数:
private int _number { get; set; }
public int Number{
get { return _number ; }
set { _number = value; }
}
public BallUc(int number) {
Number = number;
InitializeComponent();
MessageBox.Show(this.Number.ToString());
}