首页 > 代码库 > c#-集合已修改;可能无法执行枚举操作

c#-集合已修改;可能无法执行枚举操作

今天我用foreach语句去迭代Dictionary的时候,发现报错:

集合已修改;可能无法执行枚举操作

网上搜了一下,发现foreach在迭代的时候,foreach在迭代过程,不可以增加和删除.但是,我试验了,发现还有一个问题:在进行值比较并修正的时候,也会报错,如:

 1 foreach (KeyValuePair<string, double> soilStrKV in soil) 2             { 3                 if (isValidVal(soilStrKV.Value)) 4                 { 5                     soil[soilStrKV.Key] = replaceInvalidVal; 6                     //siteNumStr = soilStrKV.Key.Substring(0, soilStrKV.Key.IndexOf(‘_‘)); 7                     //yearStr  8                     //siteSoil.Add(); 9                 }10             }11 12 /// <summary>13         /// false表示不符合的值,否则符合.14         /// </summary>15         /// <param name="inVal"></param>16         /// <returns></returns>17         private bool isValidVal(double inVal)18         {19             return inVal <= available_val;20         }

在第5行,会报错(重复值修改时候).

c#-集合已修改;可能无法执行枚举操作