在foreach循环中编辑字典值

在foreach循环中编辑字典值,第1张

在foreach循环中编辑字典

在字典中设置值会更新其内部“版本号”,这会使迭代器以及与键或值集合关联的所有迭代器无效。

我确实明白您的意思,但是同时,如果values集合可以更改中间迭代,那将很奇怪-而且为简单起见,只有一个版本号。

解决此类问题的通常方法是预先复制键的集合并在副本上进行迭代,或者在原始集合上进行迭代,但要保留一组更改,这些更改将在完成迭代后应用。

例如:

首先复制密钥

List<string> keys = new List<string>(colStates.Keys);foreach(string key in keys){    double percent = colStates[key] / TotalCount;        if (percent < 0.05)    {        OtherCount += colStates[key];        colStates[key] = 0;    }}

要么…

创建修改列表

List<string> keysTonuke = new List<string>();foreach(string key in colStates.Keys){    double percent = colStates[key] / TotalCount;        if (percent < 0.05)    {        OtherCount += colStates[key];        keysToNuke.Add(key);    }}foreach (string key in keysToNuke){    colStates[key] = 0;}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5567279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存