C# 列表:如何添加常量类
我试图将速度添加到列表中,但我没有意识到,当我希望它们作为常量时,列表中的变量会发生变化。有人有什么想法吗?非常感谢 我的代码C# 列表:如何添加常量类,c#,C#,我试图将速度添加到列表中,但我没有意识到,当我希望它们作为常量时,列表中的变量会发生变化。有人有什么想法吗?非常感谢 我的代码 void CalculateVelocity(List<velocity> ListOfVelocity, particle newprojectile, Environment newEnvironment) { //load in stats newEnvironment.gravity = -9.8;
void CalculateVelocity(List<velocity> ListOfVelocity, particle newprojectile, Environment newEnvironment)
{
//load in stats
newEnvironment.gravity = -9.8;
newprojectile.TimeOfFlight = Convert.ToDouble(txtbox_TimeOfFlight.Text);
newprojectile.InitialVelocity.Magnitude = Convert.ToDouble(txtbox_InitialVelocity.Text);
newprojectile.InitialVelocity.AngleOfTravel = Convert.ToDouble(txtb_AngleOLaunch.Text);
double TimeInterval;
double FlightTime =0;
double InitialHVelocity;
velocity newVelocity;
newVelocity = new velocity();
newVelocity.Magnitude = Convert.ToDouble(txtbox_InitialVelocity.Text);
newVelocity.AngleOfTravel = Convert.ToDouble(txtb_AngleOLaunch.Text);
newVelocity.AngleOfTravel = newprojectile.InitialVelocity.AngleOfTravel;
velocity.CalculateVComponent(newVelocity);
velocity.CalculateHComponent(newVelocity);
InitialHVelocity = newVelocity.HorizontalVelocity;
ListOfVelocity.Add(newVelocity);
if (newprojectile.TimeOfFlight > 60)
{
TimeInterval = newprojectile.TimeOfFlight / 60;
}
else
{
TimeInterval = 1;
}
FlightTime =FlightTime+ TimeInterval;
while (!(newprojectile.TimeOfFlight < FlightTime))
{
velocity.CalculateVComponent(newVelocity, FlightTime, newEnvironment, newVelocity.VerticleVelocity);
ListOfVelocity.Add(newVelocity);
FlightTime = FlightTime + TimeInterval;
}
}
您必须在类Velocity中实现iClonable接口:
然后在代码中克隆对象:
void CalculateVelocity(List<velocity> ListOfVelocity, particle newprojectile, Environment newEnvironment)
{
//load in stats
newEnvironment.gravity = -9.8;
newprojectile.TimeOfFlight = Convert.ToDouble(txtbox_TimeOfFlight.Text);
newprojectile.InitialVelocity.Magnitude = Convert.ToDouble(txtbox_InitialVelocity.Text);
newprojectile.InitialVelocity.AngleOfTravel = Convert.ToDouble(txtb_AngleOLaunch.Text);
double TimeInterval;
double FlightTime =0;
double InitialHVelocity;
velocity newVelocity;
newVelocity = new velocity();
newVelocity.Magnitude = Convert.ToDouble(txtbox_InitialVelocity.Text);
newVelocity.AngleOfTravel = Convert.ToDouble(txtb_AngleOLaunch.Text);
newVelocity.AngleOfTravel = newprojectile.InitialVelocity.AngleOfTravel;
velocity.CalculateVComponent(newVelocity);
velocity.CalculateHComponent(newVelocity);
InitialHVelocity = newVelocity.HorizontalVelocity;
ListOfVelocity.Add(newVelocity);
if (newprojectile.TimeOfFlight > 60)
{
TimeInterval = newprojectile.TimeOfFlight / 60;
}
else
{
TimeInterval = 1;
}
FlightTime =FlightTime+ TimeInterval;
while (!(newprojectile.TimeOfFlight < FlightTime))
{
newVelocity = (velocity)newVelocity.clone(); // HERE!
velocity.CalculateVComponent(newVelocity, FlightTime, newEnvironment, newVelocity.VerticleVelocity);
ListOfVelocity.Add(newVelocity);
FlightTime = FlightTime + TimeInterval;
}
}
好问题,但请提供一个重现问题的答案。哦!你是第一个告诉我的人!:D
void CalculateVelocity(List<velocity> ListOfVelocity, particle newprojectile, Environment newEnvironment)
{
//load in stats
newEnvironment.gravity = -9.8;
newprojectile.TimeOfFlight = Convert.ToDouble(txtbox_TimeOfFlight.Text);
newprojectile.InitialVelocity.Magnitude = Convert.ToDouble(txtbox_InitialVelocity.Text);
newprojectile.InitialVelocity.AngleOfTravel = Convert.ToDouble(txtb_AngleOLaunch.Text);
double TimeInterval;
double FlightTime =0;
double InitialHVelocity;
velocity newVelocity;
newVelocity = new velocity();
newVelocity.Magnitude = Convert.ToDouble(txtbox_InitialVelocity.Text);
newVelocity.AngleOfTravel = Convert.ToDouble(txtb_AngleOLaunch.Text);
newVelocity.AngleOfTravel = newprojectile.InitialVelocity.AngleOfTravel;
velocity.CalculateVComponent(newVelocity);
velocity.CalculateHComponent(newVelocity);
InitialHVelocity = newVelocity.HorizontalVelocity;
ListOfVelocity.Add(newVelocity);
if (newprojectile.TimeOfFlight > 60)
{
TimeInterval = newprojectile.TimeOfFlight / 60;
}
else
{
TimeInterval = 1;
}
FlightTime =FlightTime+ TimeInterval;
while (!(newprojectile.TimeOfFlight < FlightTime))
{
newVelocity = (velocity)newVelocity.clone(); // HERE!
velocity.CalculateVComponent(newVelocity, FlightTime, newEnvironment, newVelocity.VerticleVelocity);
ListOfVelocity.Add(newVelocity);
FlightTime = FlightTime + TimeInterval;
}
}