您的位置:首页 > 编程语言 > C#

黄聪:C#使用能够foreach对hashtable、List遍历时“集合已修改;可能无法执行枚举操作。”错误

2013-12-06 13:57 691 查看
解决办法:使用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里遍历的时侯把它的元素进行删除或增加的操作的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐