string newName = "new name";
int[] numbers = new int[] { 1, 2, 3 };
var people = numbers.Select(n => new Person()
{
Name = n.ToString()
});
foreach (var person in people)
{
person.Name = newName;
}
Debug.WriteLine(people.First().Name == newName); // returns false
我预计上面的行将返回true。为什么我不能在foreach循环中设置迭代变量的属性?为什么我不能在foreach循环中设置迭代变量的属性?
重复的:http://stackoverflow.com/questions/776430/why-is-the-iteration-variable-in-ac-sharp-foreach-statement-read-only – 2012-02-03 02:39:56
这不是一个有效的重复,这不是关于分配给循环变量。这是延迟执行的问题。 – 2012-02-03 02:44:34
@ M.Babcock我不认为这是一个重复的问题。链接中的问题试图分配给迭代变量本身,而我的问题分配给迭代变量的属性。但是谢谢! – Yeonho 2012-02-03 02:45:28