0

我正在使用 Xna3,我无法让继承原理起作用。

我有这一堂课:

public class Papa{
  protected int winHeight = 10;
}

然后我有

public class Son:Papa{
   int some = winHeight;
}

我也试过base.winHeight。出于某种原因,当逐行调试时,我可以看到父级中 winHeight 的值是 10,但是在 Son 类中跳转时它是 0。

我想我所做的事情有问题,但我在网上找到的所有页面似乎都说这就是方式。

谢谢

4

1 回答 1

1

有趣的是,我发现这段代码实际上并没有在 VS2012 中编译,出现错误“非静态字段、方法或属性 'Papa.winHeight' 需要对象引用”。你确定你的编译?

您的变量被声明为带有初始化程序的字段。假设您的代码正在为您编译,这些初始化程序的运行顺序(在派生类和基类之间)必须some = winHeight是在winHeight = 10.

我建议您改为将Soninitlialisation 放在构造函数中,该构造函数将在Papa字段初始化后调用:

public class Son : Papa
{ 
   int some; 

   public void Son()
   {
      some = winHeight;
   }
} 
于 2012-08-23T10:53:40.943 回答