修改 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(因为您无法修改迭代值),它会给出很多错误。
这会使obj_list中的所有值都具有属性 55 吗?
是的 - 假设MyClass
真的是一个类。 想象一下,列表实际上是一个地址簿 - 每个页面(元素)上都有一个房子的地址。该列表不包含实际的房屋本身 - 只是获得它们的一种方式。你的foreach
循环就像在说,"对于书中的每一页,去页面上列出地址的房子,在前门上写55。
还是我需要"参考"?
不。这将尝试通过引用传递变量...迭代变量是只读的。有关此内容的更多详细信息,请参阅我关于 C# 中的参数传递的文章。