一點很小的心得。
衆所周知,具有疊代接口的集合類可以用foreach來周遊。但要求疊代過程不能被重置,也就是不能添加,删除或修改。有時候我們必須要這樣做,就需要另辟蹊徑來實作周遊。
比如ListView控件中的SelectItems是一個基于Items的子集合。如果需要删除所選項時,無法利用foreach來實作。這時候可以用類似于下面的代碼了實作:
while (aList.SelectedItems.Count > 0)
{
aItems.Remove(aList.SelectedItems[0]);
}
利用SelectedItems的動态性,固定删除第一個選項即可。
有時候我們需要更新集合中各個項的值。這時候也無法運用foreach進行周遊。我的政策是先利用一個Stack将所有的子項暫時存放,然後依次出棧實作周遊,代碼類似于:
foreach(object item in collection)
aStack.push(item);
}
while(aStack.Count>0)
object item=aStack.pop();
//update item
//...
有點笨的方法。但在子集個數不多也不大,對時間要求不BT的情況下用用還是可以的。
本文轉自 duguguiyu 51CTO部落格,原文連結:http://blog.51cto.com/duguguiyu/361729,如需轉載請自行聯系原作者