天天看點

實作集合類的元素删除和修改的一點實踐。。。

一點很小的心得。

衆所周知,具有疊代接口的集合類可以用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,如需轉載請自行聯系原作者