解决办法:使用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里遍历的时侯把它的元素进行删除或增加的操作的
本文转自黄聪博客园博客,原文链接http://www.cnblogs.com/huangcong/p/3461294.html,如需转载请自行联系原作者