Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从列表更新项目属性?_C#_Unity3d - Fatal编程技术网

C# 如何从列表更新项目属性?

C# 如何从列表更新项目属性?,c#,unity3d,C#,Unity3d,我有一个名为mysoldier的通用列表,其项目具有高度、重量等属性。 所以在添加士兵(mysoldier.Add)之后,我想更改士兵的高度。为此,我使用了以下方法: public void Increase Height() { for (int i = 0; i < mysoldier .Count; i++) { if (this.mysoldier [i].height > 7) { this.mysoldier [i].heigh

我有一个名为mysoldier的通用列表,其项目具有高度、重量等属性。 所以在添加士兵(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; 
   } 
  } 
但是通过这个代码,我只改变了先前创建的士兵的高度。因此,请任何人都告诉我代码中的错误是什么?

一些提示:

如果它是一个列表,不要叫它“mySoldier”,叫它“mySoldiers”。这会让你感到困惑。 你是如何创造这些士兵的?因为。。。如果您正在创建,然后通过循环添加,那么您就是在将引用(内存地址)添加到列表中。 如果你改变了一件事,你也改变了所有的事。 如果您只想更改一个特定项的属性,只需将索引作为参数传递给函数,而不是使用for语句


如果问题仍然存在,让我们尝试解决它。

最后一段代码没有问题。您只需修改调用的代码
IncreaseHeight
即可指定正确的索引
mysoldier
必须为
mysoldier
。(事实上,正如费尔南多解释的,“mySoldiers”加上“s”)你应该从代码中完全删除“this.”。作为一般规则,永远不要在统一中使用“this.”。您有时会在示例代码中看到它,这是完全错误的。所以删除它。注意,如果“高度”是一个浮点数,你需要说7f不是7,1f不是1等等。@JoeBlow你的“永远不要在Unity中使用“this”是没有意义的。有时,当参数和类字段具有相同的名称时,必须使用“this”来引用类字段。首先,我创建了一个公共类,添加了它的所有属性,如身高、体重等。。然后创建一个类构造函数,创建士兵列表,并使用按钮将士兵添加到新列表mysoldiers中
  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; }
  }