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