對象的列表:迭代我碰到這個聲明是用foreach
「當對象列表上使用的foreach,迭代對象實例不編輯,但對象屬性是可編輯「
有人可以用一個簡單的例子演示上述嗎?
讓我重新短語(因爲我發現有兩個版本的說法),也許這種說法更明確:
「當使用的foreach元素的列表,迭代變量那提供元件是只讀,但元素屬性是可編輯的「
對象的列表:迭代我碰到這個聲明是用foreach
「當對象列表上使用的foreach,迭代對象實例不編輯,但對象屬性是可編輯「
有人可以用一個簡單的例子演示上述嗎?
讓我重新短語(因爲我發現有兩個版本的說法),也許這種說法更明確:
「當使用的foreach元素的列表,迭代變量那提供元件是只讀,但元素屬性是可編輯的「
foreach(var foo in foos)
{
foo = null; // WRONG, foo is not editable
foo.name = "John"; // RIGHT, foo properties are editable
}
是
Foreach (n in list) if (n.something==true) list.Remove(n);
這將失敗
你不能在列表中刪除的項目,不像說一個for循環
foreach var car in cars
{
//you can edit car.color here
//you cannot edit car
}
什麼手段是,在列表中的項目迭代時不會改變,但是項目的內容可能會變化。
這將改變收集和防止在foreach完成:
foreach(var item in collection)
{
collection.Remove(item);
}
這將在列表中改變一個項目,而不是阻止的foreach完成:
foreach(var item in collection)
{
item.name = "Neil";
}
不知道你需要一個例子爲了這。您將跨越集合中的每個對象,並且可以對每個對象執行您喜歡的操作,但不能對集合本身進行更改,例如插入,刪除,清除等。試圖這樣會拋出異常。
這意味着列表本身不能被修改(當你在循環中時你不能刪除或添加項目),但是列表中項目的屬性可以被修改。另請閱讀http://stackoverflow.com/questions/4004755/why-is-foreach-loop-read-only-in-c-sharp –
你在哪裏找到那個報價? – Thorarins
我發現在一個關於PS中PS的泛型類型的課程(PS是一個衆所周知的在線課程提供者的縮寫) – cnom