C#使用foreach遍历hashtable集合,并同时操作集合时,报错:集合已修改;可能无法执行枚举操作

报错如下:

C#使用foreach遍历hashtable集合,并同时操作集合时,报错:集合已修改;可能无法执行枚举操作_第1张图片

问题解析: 

1、hashtable存放键值的时候,不是按照你存放顺序放的。所以当你用foreach遍历的时候,就不能保证遍历出来的顺序和你原来存放进去的顺序是一致的。

2、foreach 语句是对枚举数的包装,它只允许从集合中读取,不允许写入集合。也就是,不能在foreach里遍历的时侯把它的元素进行删除或增加、修改的操作

解决方法:使用for循环倒序遍历,示例代码如下:

if (haseList != null && haseList .Count > 0 )
{
    ArrayList akeys = new ArrayList(haseList.Keys);
    for (int i = akeys.Count - 1; i > -1; i--) 
    {
        //键
        int key=Convert.ToInt32(akeys[i]);
        //值
        string value=haseList[key].ToString();            
    }
}

 

你可能感兴趣的:(C#)