在字典中设置值会更新其内部“版本号”,这会使迭代器以及与键或值集合关联的所有迭代器无效。
我确实明白您的意思,但是同时,如果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;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)