asp.net – 如何在迭代字典项时更新值?
发布时间:2020-12-15 21:01:06 所属栏目:asp.Net 来源:网络整理
导读:我有一本字典: Dictionarystring,long Reps = new Dictionarystring,long(); 我想在迭代所有项目时更新值,如下所示: foreach (string key in Reps.keys){ Reps[key] = 0;} 它给我一个错误说: "Collection was modified; enumeration operation may not ex
我有一本字典:
Dictionary<string,long> Reps = new Dictionary<string,long>(); 我想在迭代所有项目时更新值,如下所示: foreach (string key in Reps.keys) { Reps[key] = 0; } 它给我一个错误说: "Collection was modified; enumeration operation may not execute" 任何人都可以告诉我为什么它给我这个错误,因为我还有一个函数添加了值,并在单击按钮时调用它: public static void Increment(string RepId,int amount) { long _value = Convert.ToInt64(Reps[RepId]); _value = _value + amount; Reps[RepId] = _value; } 这个功能工作正常.那么更新所有值时会出现什么问题?最新解决方案是什么? 解决方法
更简化,这样做:
foreach (string key in Reps.keys.ToList()) { Reps[key] = 0; } 并且出错的原因是您正在尝试编辑正在使用的实际对象,如果您复制它,然后像这样使用它: var repscopy = Reps; foreach (string key in repscopy.keys) { Reps[key] = 0; } 它会给出与指向原始对象相同的错误,并且当添加ToList()时,它会创建一个新的List对象 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET控件属性与[Flags]枚举
- asp.net-mvc – MVC 3从web.config中的AppSettings获取值
- asp.net – 实际文化是否与SQL相关联到CLR float-double转换
- 浅谈ASP.Net Core WebApi几种版本控制对比
- ASP.NET处理程序未在IIS7上运行
- .net – Ninject的InRequestScope发生了什么事
- entity-framework – 在ViewBag中填充匿名类型,导致模型绑定
- ASP.NET用户未显示所有Active Directory组
- 如何在ASP.NET按钮中使用Twitter Bootstrap图标?
- asp.net-mvc-3 – WSFederationAuthenticationModule.IsSig
推荐文章
站长推荐
热点阅读