解決辦法:使用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里遍歷的時侯把它的元素進行刪除或增加的操作的