如果需要遍历一个集合类型,并且在符合条件的时候移除相应的元素,请问应该怎么处理呢?
foreach (string key in dictionary.Keys)
{
    if (...) dictionary.Remove(key);
}
在以上foreach遍历中,如果移除了集合中的元素,就会引发异常。

解决方案 »

  1.   

    foreach只支持遍历  不支持遍历中进行ADD和DELETE操作你改用FOR循环就行了
      

  2.   

    在用foreach 蝶代的过程中,对集合中的元素是不能更改的,只能读试试这样:
    for (int i = 0; i < dictionary.Keys.Count; i++)
    {
      if (...)
          dictionary.Remove(dictionary.Keys[i]);
    }
      

  3.   

    for each只能向前只读,不能对正在遍历的集合修改。改用for或while可以修改正在遍历的集合
      

  4.   

    Dictionary<string, object> dictionary = new Dictionary<string, object>();
    for (int i = 0; i < dictionary.Keys.Count; i++)
    {
      if (...)
          dictionary.Remove(dictionary.Keys[i]);
    }
    这里Keys[i]编译失败...
      

  5.   

    如下:
    string[] keys = new string[dictionary.Keys.Count];dictionary.Keys.CopyTo(keys, 0);foreach (string key in keys)
    {
    dictionary.Remove(key);
    }
    例如:
    Dictionary<string, int> dictionary = new Dictionary<string, int>();
    dictionary.Add("1", 1);
    dictionary.Add("2", 2);
    string[] keys = new string[dictionary.Keys.Count];
    dictionary.Keys.CopyTo(keys, 0);
    foreach (string key in keys)
    {
    if( key=="2")
    dictionary.Remove(key);
    }