[英]Object reference not set to an instance of an object. c# RADTreeView telerik
[英]C# “Object reference not set to an instance of an object.”
当我尝试使用与其连接的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();
上发生的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()
根据VS告诉我的内容,第一行if(PlanePosition.speed < Position.MAX_SPEED)
一直在发生。
//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
那么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
}
一般来说,当您尝试使用尚未实例化的对象时,就会发生该错误。
因此,PlanePosition是类的名称,您将需要实例化该类,然后将该方法与该对象一起使用。
PlanePosition myPlane = new PlanePosition();
myPlane.speed < ...
但是我认为没有提供足够的细节来提供比我给您的更具体的信息。 什么是PlanePosition? 类还是对象?
PlanePosition
尚未初始化。 您需要在调用Accelerate
之前确保将对象分配给PlanePosition
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.