快速提问:
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会产生很多错误(因为你无法修改迭代值)。
答案 0 :(得分:3)
这会使obj_list中的所有值都具有属性55吗?
是的 - 假设MyClass
确实是一个班级。想象一下,列表实际上是一个地址簿 - 每个页面上都有一个房子的地址(元素)。该列表不包含实际房屋本身 - 只是一种获取它们的方式。你的foreach
循环就像是说:“对于书中的每一页,请到页面上列出地址并在前门写55的房子。”
或者我需要“参考”?
没有。这将尝试通过引用传递变量 ...并且迭代变量是只读的。有关详细信息,请参阅我在parameter passing in C#上的文章。