gpt4 book ai didi

asp.net - 迭代字典项时如何更新值?

转载 作者:行者123 更新时间:2023-12-04 13:54:15 26 4
gpt4 key购买 nike

我有一本字典:

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 - 迭代字典项时如何更新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7160264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com