1

快速提问:

public void ChangeObject(MyClass a){
  a.property = 55;
}

public void Test(){
  List<MyClass> obj_list = get_the_list();
  foreach( MyClass obj in obj_list )
  {
      ChangeObject(obj);
  }
}

这会使 obj_list 中的所有值都具有属性 55 吗?

因此,在我的代码中的其他地方,我将调用 "if(obj_list[5].property == 55){ print("YES"); }" 在循环后为真。

还是我需要“参考”?因为如果您尝试使用 ref 会产生很多错误(因为您无法修改迭代值)。

4

1 回答 1

3

这会使 obj_list 中的所有值都具有属性 55 吗?

是的 - 假设MyClass真的是一个类。想象一下,这个列表实际上是一个地址簿——每个页面(元素)上都有一个房子的地址。该列表不包含实际的房屋本身 - 只是一种到达它们的方式。您的foreach循环就像是在说:“对于书中的每一页,去页面上列出地址的房子,并在前门写上 55。”

还是我需要“参考”?

不,那会尝试通过引用传递变量......并且迭代变量是只读的。有关这方面的更多详细信息,请参阅我关于C# 中的参数传递的文章。

于 2013-10-02T17:47:42.200 回答