修改For Each循环中的值-任何方式

本文关键字:任何方 何方 Each For 循环 修改 | 更新日期: 2023-09-27 18:16:52

我知道这违反。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: Collection被修改;不能执行枚举操作。我将字典转换为数组并试图以这种方式修改它,但KeyValuePair.Value只读,所以它不会工作。

修改For Each循环中的值-任何方式

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

foreach (var x in Variables.Keys.ToArray())

不能在循环中编辑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;

我首先创建集合的副本,然后遍历副本,允许我根据需要对原始副本进行修改。