收集被修改; 枚举操作可能无法执行

Gar*_*ama 0 c# collections foreach

我通过字典枚举并创建一个要添加到ListView的项目.但是,特别是一行导致此错误:

收集被修改; 枚举操作可能无法执行.

foreach (KeyValuePair<string, bool> s in test.Value.Properties)
{
    ListViewItem item = new ListViewItem();
    item.Text = String.Format("{0}", s.Key);
    if (s.Value) { item.Checked = true; } // the problem line
    listView2.Items.Add(item);
}
Run Code Online (Sandbox Code Playgroud)

我假设设置item.Text的原因是因为我没有修改原始值,因为它正在创建一个新字符串.如果我改变item.Checked = true来创建一个新的布尔值,它工作正常但布尔值总是默认为false,这不是我想要的.

我该如何解决这个问题?

另外,我是不是应该尝试修改foreach中的任何集合数据?我原本以为这个问题是因为我正在修改我正在循环的集合数据,但这似乎是ListViewItemCollection的一个问题,我没有循环遍历.

Dan*_*rth 7

仅当您修改要枚举的集合时,才会引发此错误.
我在代码中看不到类似的东西,所以一定有其他问题.
我只能猜测,但也许,你test.Value.Properties在一个事件中修改,当你添加一个新项目时listView2