我知道这违反了.NET规则,但有时我需要它。例如,我需要运行Dictionary<string, bool>
。该字典将我的变量存储在解析的逻辑方程中。我想输出一个真值表,所以我需要迭代并设置元素。
我尝试过的一件事是
foreach (var x in Variables.Keys)
{
bool on = ((in) & (j << in)) > 0;
Variables[x] = on;
builder.Append(on == true ? '1' : '0').Append('\t');
j++;
}
我刚收到InvalidOperationException
:收藏品已修改;枚举操作可能无法执行。我将字典转换为数组并试图以这种方式进行修改,但是KeyValuePair.Value
只读,所以它不起作用。
答案 0 :(得分:9)
您可以创建密钥集的副本:
foreach (var x in Variables.Keys.ToArray())
答案 1 :(得分:0)
您无法循环编辑Dictionary<TKey, TValue>
。
试试这个:
var resultVariables = new Dictionary<string, bool>(Variables.Count);
foreach (var x in Variables.Keys)
{
bool on = ((in) & (j << in)) > 0;
resultVariables[x] = on;
builder.Append(on == true ? '1' : '0').Append('\t');
j++;
}
Variables = resultVariables;
答案 2 :(得分:0)
我首先创建一个集合的副本,然后我会遍历副本,这样我就可以根据需要弄乱原始集合。