构造函数属性总是0 / null,我缺少什么?

时间:2014-11-23 09:44:22

标签: c# wpf class properties

一直想弄清楚为什么我无法使用属性值初始化新对象。可能忽略了一些非常基本的东西 - 但却无法理解它是什么。希望我能用这样的方式来表达我的问题,即它对其他人也有用。

在我的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类中的一些函数。希望我的问题很清楚,如果需要澄清,请告诉我。提前感谢您的时间!

3 个答案:

答案 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());
}