当我尝试使用连接到它的btn时出现错误:
private void btnAccel_Click(object sender, EventArgs e)
{
pStatus.Text = plane.speed.ToString();
plane.speed = double.Parse(txtSpeed.Text);
plane.Accelerate();
pStatus.Text = plane.speed.ToString();
}
pStatus是我使用的面板,在我提高速度之前和之后更新当前速度。
plane
在上面定义为:
Airplane plane = new Airplane();
当它到达plane.Accelerate();
public void Accelerate()
{
// increase the speed of the airplane
if (PlanePosition.speed < Position.MAX_SPEED)
{
PlanePosition.speed = PlanePosition.speed + 1; // or speed += 1;
}//end of if
numberCreated++; // increment the numberCreated each time an Airplane object is created
}//end of public Accelerate()
第一行if(PlanePosition.speed < Position.MAX_SPEED)
是VS告诉我的地方。
//private variables
private string name{get; set;}
private Position planePosition;
private static int numberCreated;
//default constructor
public Airplane()
{
}//end of public Airplane
public Position PlanePosition{get;set;}
class Position
{
//private variables
internal int x_coordinate;
internal int y_coordinate;
internal double speed;
internal int direction;
internal const int MAX_SPEED = 50;
//default constructor
public Position()
{
}//end of public Position
public string displayPosition()
{
return "okay";
}//end of public string displayPosition()
}//end of class Position
答案 0 :(得分:1)
然后PlanePosition
显然是null
。你可能错过了
PlanePosition = new Position(); // or whatever the type of PlanePosition is
在Airplane
或
private PlanePosition = new Position();
初始化字段或类似地,如果它是属性。
我看到你将以下评论留给了另一个答案:
public Position PlanePosition{get;set;}
所以这是一个自动属性,你没有初始化它。因此,它接收参考类型为null
的默认值。您需要在构造函数中初始化它:
public Airplane() {
this.PlanePosition = new Position(// parameters for constructor);
// rest of constructor
}
答案 1 :(得分:0)
一般来说,当您尝试使用尚未实例化的对象时,会发生错误。
因此,PlanePosition是类的名称,您将要实例化该类,然后将该方法与该对象一起使用。
PlanePosition myPlane = new PlanePosition();
myPlane.speed < ...
但我认为没有足够的细节比我给你的更具体。什么是PlanePosition?一个类或一个对象?
答案 2 :(得分:0)
PlanePosition
未初始化。在调用Accelerate