我有一个通用的列表,它的项目有像身高,体重等属性。所以在添加士兵(mysoldier.Add)之后,我想改变士兵的高度。为此,我使用了以下代码:
public void Increase Height()
{
for (int i = 0; i < mysoldier .Count; i++)
{
if (this.mysoldier [i].height > 7)
{
this.mysoldier [i].height= 7;
}
else
{
this.mysoldier [i].height+= 1;
}
}
但这并不是只改变一个特定物体的高度,而是改变添加到容器中的所有士兵的高度。
public void IncreaseHeight(int i) //#, or mysoldier.Count - 1 (I believe) for last
{
if (this.mysoldier [i].height > 7)
{ this.mysoldier [i].height= 7; }
else { this.mysoldier [i].height+= 1; }
}
但是在这段代码中,我只改变了之前创建的士兵的身高。所以,请任何人能告诉我代码中的错误在哪里?
发布于 2016-04-15 17:45:50
一些小贴士:
如果它是一个列表,不要叫它"mySoldier",而要叫它"mySoldiers“。这可能会让你感到困惑。你是如何创造这些士兵的?因为..。如果您正在创建,然后通过循环添加相同的内容,则是将引用(内存地址)添加到列表中。如果您在其中更改了某些内容,则会在所有这些内容中进行更改。如果您只想更改某个特定项的属性,只需将索引作为参数传递给您的函数,而不是使用for语句。
如果你仍然有这个问题,让我们试着解决它。
https://stackoverflow.com/questions/36642643
复制相似问题