黃聰:C#使用能夠foreach對hashtable、List遍歷時“集合已修改;可能無法執行枚舉操作。”錯誤


解決辦法:使用for循環,而不是foreach循環

例如:

ArrayList   akeys=new   ArrayList(_transmit_tb.Keys);   
for(int   p=akeys.Count-1;p> -1;p--) 
{ 
      _transmit_tb.Remove(akeys[p]); 
}

原因:

1、hashtable存放你放入的值的時候,不是按照你存放順序放的 
所以當你用foreach遍歷的時候,就不能保證遍歷出來的順序和你原來存放進去的順序是一致的。

2、msdn的解釋:foreach 語句是對枚舉數的包裝,它只允許從集合中讀取,不允許寫入集合。也就是,不能在foreach里遍歷的時侯把它的元素進行刪除或增加的操作的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM