Saf*_*Ali 6 asp.net dictionary enumeration
我有一本字典:
Dictionary<string, long> Reps = new Dictionary<string, long>();
Run Code Online (Sandbox Code Playgroud)
我想在迭代所有项目时更新值,如下所示:
foreach (string key in Reps.keys)
{
Reps[key] = 0;
}
Run Code Online (Sandbox Code Playgroud)
它给我一个错误说:
"Collection was modified; enumeration operation may not execute"
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么它给我这个错误,因为我还有一个函数添加了值,并在单击按钮时调用它:
public static void Increment(string RepId, int amount)
{
long _value = Convert.ToInt64(Reps[RepId]);
_value = _value + amount;
Reps[RepId] = _value;
}
Run Code Online (Sandbox Code Playgroud)
这个功能工作正常.那么更新所有值时会出现什么问题?最新解决方案是什么?
小智 4
更简单的是,这样做:
foreach (string key in Reps.keys.ToList())
{
Reps[key] = 0;
}
Run Code Online (Sandbox Code Playgroud)
错误的原因是您正在尝试编辑正在使用的实际对象,如果您复制它,然后像这样使用它:
var repscopy = Reps;
foreach (string key in repscopy.keys)
{
Reps[key] = 0;
}
Run Code Online (Sandbox Code Playgroud)
它会给出相同的错误,因为它也指向原始对象,并且当添加 ToList() 时,它创建了一个新的 List 对象
| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |