修改每个循环中的值 - 任何方式?

Cal*_*res 1 .net c# foreach

我知道这违反了.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++;
        }
Run Code Online (Sandbox Code Playgroud)

我得到一个InvalidOperationException:收藏被修改; 枚举操作可能无法执行.我转换的字典一个数组,并试图改变这种方式,但是KeyValuePair.Value只读的,所以它不会起作用.

Cha*_*ion 9

您可以创建密钥集合的副本:

foreach (var x in Variables.Keys.ToArray())
Run Code Online (Sandbox Code Playgroud)