C#(再次,再次?)变量未保存
哇,猜猜谁回来了! 程序运行(horrah),但现在变量没有保存值。 主要形式:C#(再次,再次?)变量未保存,c#,visual-studio-2008,C#,Visual Studio 2008,哇,猜猜谁回来了! 程序运行(horrah),但现在变量没有保存值。 主要形式: Airplane plane = new Airplane(); private void btnAccel_Click(object sender, EventArgs e) { lblStatus.Text = plane.speed.ToString(); plane.speed = double.Parse(txtSpeed.Text); plane.Accelerate(
Airplane plane = new Airplane();
private void btnAccel_Click(object sender, EventArgs e)
{
lblStatus.Text = plane.speed.ToString();
plane.speed = double.Parse(txtSpeed.Text);
plane.Accelerate();
lblStatus.Text = plane.speed.ToString();
}
从飞机上看:
class Airplane
{
private string name{get; set;}
private Position PlanePosition;
private static int numberCreated;
public Airplane()
{
this.PlanePosition = new Position();
}
public void Accelerate()
{
// increase the speed of the airplane
if (PlanePosition.speed < Position.MAX_SPEED)
{
PlanePosition.speed +=1; // or speed += 1;
}//end of if
numberCreated++; // increment the numberCreated each time an Airplane object is created
}
出于某种原因,主窗体中文本框中的变量变为“速度”变量,但飞机类中的速度变量没有该变量。在文本框中设置速度后,您正在调用Accelerate。因此,自动将速度提高1。。。这不是问题,是吗?如果没有,您能否为那些不熟悉您正在做的事情的人提供更多的信息?您在文本框中设置速度后立即调用Accelerate。因此,自动将速度提高1。。。这不是问题,是吗?如果没有,你能为那些不熟悉你所做的事情的人提供更多的信息吗?要么你的示例不完整,要么你的代码正在神奇地编译。我猜您需要实现一个属性来访问
PlanePosition
实例中包含的速度
class Airplane
{
private string name{get; set;}
private Position PlanePosition;
private static int numberCreated;
public double speed
{
get { PlanePosition.Speed = value; }
set { return PlanePosition.speed; }
}
public Airplane()
{
this.PlanePosition = new Position();
}
public void Accelerate()
{
// increase the speed of the airplane
if (PlanePosition.speed < Position.MAX_SPEED)
{
PlanePosition.speed +=1; // or speed += 1;
}//end of if
numberCreated++; // increment the numberCreated each time an Airplane object is created
}
}
级飞机
{
私有字符串名称{get;set;}
私人职位;
创建私有静态整数;
公共双速
{
获取{PlanePosition.Speed=value;}
设置{return PlanePosition.speed;}
}
公共飞机()
{
this.PlanePosition=新位置();
}
公共图书馆
{
//提高飞机的速度
if(平面位置速度<位置最大速度)
{
PlanePosition.speed+=1;//或speed+=1;
}//if结束
numberCreated++;//每次创建飞机对象时递增numberCreated
}
}
要么您的示例不完整,要么您的代码正在神奇地编译。我猜您需要实现一个属性来访问PlanePosition
实例中包含的速度
class Airplane
{
private string name{get; set;}
private Position PlanePosition;
private static int numberCreated;
public double speed
{
get { PlanePosition.Speed = value; }
set { return PlanePosition.speed; }
}
public Airplane()
{
this.PlanePosition = new Position();
}
public void Accelerate()
{
// increase the speed of the airplane
if (PlanePosition.speed < Position.MAX_SPEED)
{
PlanePosition.speed +=1; // or speed += 1;
}//end of if
numberCreated++; // increment the numberCreated each time an Airplane object is created
}
}
级飞机
{
私有字符串名称{get;set;}
私人职位;
创建私有静态整数;
公共双速
{
获取{PlanePosition.Speed=value;}
设置{return PlanePosition.speed;}
}
公共飞机()
{
this.PlanePosition=新位置();
}
公共图书馆
{
//提高飞机的速度
if(平面位置速度<位置最大速度)
{
PlanePosition.speed+=1;//或speed+=1;
}//if结束
numberCreated++;//每次创建飞机对象时递增numberCreated
}
}
一般来说,在我们研究您的问题之前,先看看您的对象模型。速度真的是飞机位置的属性吗?真的吗
您需要首先对其进行分类的原因是,尽管如此,您最终将构建一堆无法维护的代码,编码人员必须明确知道所有内容的存储位置
此外,最大速度不应该固定为一个常数——某个地方的某个人最终会制造一架速度更快的飞机,毁了你一整天的时间
在进一步讨论之前,我建议您考虑一下这些问题。如果你在课堂上和其他学生一起工作,同行评议可能是你想考虑的事情。
至于问题本身,您是否已使用调试器逐步完成了代码?只需一次一行地编写代码,就可以发现您编写的代码与您当时打算编写的代码之间的差异
在btn\u Accel\u Click中粘贴一个断点-它是否均匀触发?我知道你认为我在挖苦人,但我真的没有,我是想帮你。这正是我在陷入自我分析的困境之前所要做的
Martin。一般来说,在我们研究您的问题之前,先看看您的对象模型。速度真的是飞机位置的属性吗?真的吗 您需要首先对其进行分类的原因是,尽管如此,您最终将构建一堆无法维护的代码,编码人员必须明确知道所有内容的存储位置 此外,最大速度不应该固定为一个常数——某个地方的某个人最终会制造一架速度更快的飞机,毁了你一整天的时间 在进一步讨论之前,我建议您考虑一下这些问题。如果你在课堂上和其他学生一起工作,同行评议可能是你想考虑的事情。 至于问题本身,您是否已使用调试器逐步完成了代码?只需一次一行地编写代码,就可以发现您编写的代码与您当时打算编写的代码之间的差异 在btn\u Accel\u Click中粘贴一个断点-它是否均匀触发?我知道你认为我在挖苦人,但我真的没有,我是想帮你。这正是我在陷入自我分析的困境之前所要做的
马丁。你的飞机级别没有速射。它将如何工作 或者你做的像Greg Buehled aswered一样,或者你可以试试这样的东西: 将您的PlanePosition设置为公共
class Airplane
{
private string name{get; set;}
public Position PlanePosition;
private static int numberCreated;
public Airplane()
{
this.PlanePosition = new Position();
}
public void Accelerate()
{
// increase the speed of the airplane
if (PlanePosition.speed < Position.MAX_SPEED)
{
PlanePosition.speed +=1; // or speed += 1;
}//end of if
numberCreated++; // increment the numberCreated each time an Airplane object is created
}
这不是最好的,但也是一种方式。你的飞机级别没有速度调节器。它将如何工作 或者你做的像Greg Buehled aswered一样,或者你可以试试这样的东西: 将您的PlanePosition设置为公共
class Airplane
{
private string name{get; set;}
public Position PlanePosition;
private static int numberCreated;
public Airplane()
{
this.PlanePosition = new Position();
}
public void Accelerate()
{
// increase the speed of the airplane
if (PlanePosition.speed < Position.MAX_SPEED)
{
PlanePosition.speed +=1; // or speed += 1;
}//end of if
numberCreated++; // increment the numberCreated each time an Airplane object is created
}
这不是最好的,但也是一种方式。什么是
飞机。速度
?我看到你分配给它,但我看不到它存储在哪里或使用在哪里。我在飞机上看不到速度属性或字段。同样,我觉得奇怪的是位置包含速度字段。我想<代码>位置<代码>是一个坐标和(也许)一个标题。只是一个注释——你可以考虑用向量或矩阵替换离散的x/y坐标、速度和加速度,