InvalidOperationException: Collection was modified; enumeration operation may not execute.

本文主要是介绍InvalidOperationException: Collection was modified; enumeration operation may not execute.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天写C#脚本,运行时报错,错误信息:

InvalidOperationException: Collection was modified; enumeration operation may not execute.

然后定位到出错行,发现是foreach循环出错,记得之前遇到过,foreach...in...里不能有remove的,奈何写的时候又忘记了。

错误代码:

foreach(GoodInfoVO info in mResGoodBagVO.M_goods){foreach (SwallowFuWenVO vo in mSwallowFuWenList){if (vo.fuwenId == info.id){info.chip -= vo.num;if (info.chip <= 0) mResGoodBagVO.M_goods.Remove(info);break;}}}

将foreach改成for循环替代就可以了:

for (int i = mResGoodBagVO.M_goods.Count - 1; i >= 0; --i ){GoodInfoVO info = mResGoodBagVO.M_goods[i];foreach (SwallowFuWenVO vo in mSwallowFuWenList){if (vo.fuwenId == info.id){info.chip -= vo.num;if (info.chip <= 0) mResGoodBagVO.M_goods.Remove(info);break;}}}



这篇关于InvalidOperationException: Collection was modified; enumeration operation may not execute.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/952329

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

浅谈PHP5中垃圾回收算法(Garbage Collection)的演化

前言 PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage Collection)。现在如果去PHP官方网站(php.net)可以看到,目前PHP5的两个分支版本PHP5.2和PHP5.3是分别更新的,这是因为许多项目仍然使用5.2版本的PHP,而5.3版本对5.2并不是完

Collection的所有的方法演示

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class TestCollection {/*** @param args* Collection的所有的方法演示* 此程序没有使用泛型,所以可以添加任意类型* 以后如果写到泛型会补充这一方面的内容*/public s

Mybatis的collection只显示一条数据

在mybatis一对多映射中,多的那种表mybatis只查询出一条数据,而直接用sql查询数据库的话有多条数据。这是因为两张表的主键同名,都为id_key。解决方法:使用别名。给映射多的那张表的主键使用别名。 sql语句别名 resultmap映射

[LeetCode] 583. Delete Operation for Two Strings

题:https://leetcode.com/problems/delete-operation-for-two-strings/description/ 题目 Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 the same, where in

macos 系统文件操作时提示 Operation not permitted 异常解决方法 , 通过恢复模式 开启 /关闭 SIP方法

在macos系统中操作系统文件时提示 Operation not permitted  这个异常, 原因是因为在macos 10.11以上版本中默认启用了 SIP( System Integrity Protection )机制对系统文件进行保护,  要解决这个问题我们需要关机, 然后进入mac的恢复模式 :  在按电源键开机的同时, 一直按住 command + r 键 直到出现恢复模式界面后松

error C4996: 'fopen': This function or variable may be unsafe.

今天在vs2013编程中遇到这样的错误:error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS. See online help for details

电脑开机出现no operation system found错误原因分析及解决方法

最近有网友问我电脑一启动提示:no operation system found,这个提示意思是未找到操作系统。并且出现bios能认别硬盘,快捷启动时找不到硬盘,出现该提示的原因有很多,下面我们来详细分析一下开机出现no operation system found解决方法全集。 电脑开机出现no operation system found错误原因分析及注意事项: 电脑开机时出

【LINUX】“dmesg: read kernel buffer failed: Operation not permitted“ 错误

出现 “dmesg: read kernel buffer failed: Operation not permitted” 错误通常是因为当前用户没有权限读取内核日志缓冲区 这可以通过修改内核参数 kernel.dmesg_restrict 来解决。 你可以尝试以下命令来允许非特权用户读取内核日志: sudo sysctl -w kernel.dmesg_restrict=0 这个命令