修改 foreach 循环中的集合

本文关键字:集合 循环 foreach 修改 | 更新日期: 2023-09-27 18:33:41

快速问题:

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(因为您无法修改迭代值),它会给出很多错误。

修改 foreach 循环中的集合

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

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

还是我需要"参考"?

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