首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
[C#]集合已修改;可能无法执行枚举操作
】的更多相关文章
C# 集合已修改;可能无法执行枚举操作
在winform 项目时遇到: 集合已修改;可能无法执行枚举操作的问题 错误原因:当用foreach遍历Collection时,如果对Collection有Add或者Remove或其他类似操作都会有这个错误. 因为Collection返回的IEnumerator把当前的属性暴露为只读属性,所以对其的修改会导致运行时错误: 正确代码: FormCollection collection = Application.OpenForms; List<Form> frmList = new List&…
Collection was modified; enumeration operation may not execute Dictionary 集合已修改;可能无法执行枚举操作
public void ForeachDic() { Dictionary dic = new Dictionary(); dic.Add("1", 10); dic.Add("2", 20); dic.Add("3", 30); foreach (KeyValuePair kvp in dic) { Console.WriteLine(String.Format("Key:{0}; Value:{1}", kvp.Key,…
C# 集合已修改 可能无法执行枚举操作 zz
今天编写程序时 修改了list集合 在foreach时报 “集合已修改:可能无法执行枚举操作.”错误. 首先想到的是没有锁定集合对象. 增加了 private readonly object syncRoot = new object(); 所以先尝试 lock(syncRoot){} lock关键字用法,多线程共用对象时,操作对象时锁定对象,这样如果有别的线程访问对象,则自动加入队列等待.确保对象操作过程中准确性. 但是问题依旧,查了一下说foreach是只读的,集合如果变更就会出这个问题 于…
黄聪:C#使用能够foreach对hashtable、List遍历时“集合已修改;可能无法执行枚举操作。”错误
解决办法:使用for循环,而不是foreach循环 例如: ArrayList akeys=new ArrayList(_transmit_tb.Keys); ;p> -;p--) { _transmit_tb.Remove(akeys[p]); } 原因: 1.hashtable存放你放入的值的时候,不是按照你存放顺序放的 所以当你用foreach遍历的时候,就不能保证遍历出来的顺序和你原来存放进去的顺序是一致的. 2.msdn的解释:foreach 语句是对枚举数的包装,它只允许从集合中读…
C# DIctionary:集合已修改,可能无法执行枚举操作
C#中直接对集合Dictionary进行遍历并修改其中的值,会报错,如下代码就会报错:集合已修改;可能无法执行枚举操作.代码如下 public void ForeachDic() { Dictionary<String, Int32> dic = new Dictionary<String, Int32>(); dic.Add(); dic.Add(); dic.Add(); foreach (KeyValuePair<String, Int32> kvp in dic…
{"集合已修改;可能无法执行枚举操作。"}
无论是向集合中添加元素还是从集合中删除元素,都会导致集合内部的变化,特别是集合遍历器的变化.例如 List<,,,,}; foreach(int x in list) { list.Remove(x); //将引发异常:{"集合已修改:可能无法执行枚举操作."} } 使用foreach不能执行删除.修改,这是规定.你可以使用for循环遍历修改. 如果你是删除的话,for循环 i 要从大到小,比如: ;i>=;i--){ } 而不是 for(int i=0;i<=50;…
错误记录--关于foreach,集合已修改;可能无法执行枚举操作
集合已修改,可能无法执行枚举操作.今天在使用foreach遍历的时候出现了这样的错误.查了一下,这个是使用foreach的典型的错误问题问题.foreach在遍历取数据的过程中,枚举器只允许读,不允许更改其中的数据,包括修改删除添加.这种情况下如果需要改动数据,应该使用for遍历. 错误代码 /// <summary> /// 获得表中不含列名id的所有列名 /// </summary> /// <param name="dtCols"></p…
[C#]集合已修改;可能无法执行枚举操作
摘要 我相信很多人对这个再熟悉不过了.对已经修改的集合进行操作就会出现这个错. 解决办法 比如有下面的一段代码,我们创建一个集合,并向集合中添加10个数,然后,我们循环再将这些数移除了. static void Main(string[] args) { List<int> lst = new List<int>(); ; i < ; i++) { lst.Add(i); } foreach (var item in lst) { lst.Remove(item); } Co…
.NET中集合已修改;可能无法执行枚举操作 的解决办法
foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等).要避免这个问题,就应该使用for循环. https://msdn.microsoft.com/zh-cn/library/ttw7t8t6.aspx…
foreach---集合已修改;可能无法执行枚举操作。
小结 : foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等).要避免这个问题,就应该使用for循环--- 原因: 当用foreach遍历Collection时,如果对Collection有Add或者Remove操作或者给item某个属性赋值都会有这个错误.因为Collection返回的IEnumerator把当前的属性暴露为只读属性,所以对其的修改会导致运行时错误,只需要把foreach改为for来遍历就好了. ---然而卵…