请考虑以下代码:
public class Program {
public struct A
{
public int Prop {get;set;}
}
public static void Main()
{
var obj = new A();
obj.Prop = 10;
var list = new List<A>(){obj};
foreach(var l in list) {
l.Prop = 20; //here I'm getting compile time error "Cannot modify members of 'l' because it is a 'foreach iteration variable'"
}
}
}
所以我的问题是:为什么在遍历结构列表时不能分配结构属性?请注意,即使像这样简单地进行迭代:
for (int i=0; i<list.Count(); ++i)
list[i].Prop = 20;
我仍然收到编译时错误...
您无法修改要使用foreach
进行迭代的集合。
相反,您应该使用for
循环,该循环允许:
for(int i = 0; i < list.Length; i++)
{
list[i].Prop = 200;
}