C#列表插入foreach

GoO*_*oOx 5 c# foreach insert

我有以下循环:

List<Reminders> reminds = new List<Reminders>();
//...
foreach (Reminders remind in reminds)
{
    //....
    reminds.Insert(id, new Reminders() { Title = remind.Title, Content = remind.Content, Checked = true });
}
Run Code Online (Sandbox Code Playgroud)

但是,foreach循环中会发生错误。

foreach (Reminders remind in reminds)
Run Code Online (Sandbox Code Playgroud)

如果我删除该reminds.Insert语句,该错误将不再发生。我正在尝试更新循环内的某些整体foreach。是什么导致错误?

DrK*_*och 5

将您的代码更改为:

List<Reminders> reminds = new List<Reminders>();
...
foreach (Reminders remind in reminds.ToList())
{
    ....
    reminds.Insert(id, new Reminders() { Title = remind.Title, Content = remind.Content, Checked = true });
}
Run Code Online (Sandbox Code Playgroud)

请注意后面的.ToList()提醒。

说明:当集合在 foreach 中枚举时,您不能修改该集合。.ToList() 将创建另一个临时集合,该集合在 foreach 循环期间保持不变。


t3c*_*b0t 1

如果您想更新某些条目,那么您不应该添加新条目,只需将每个条目的属性设置Checked为:true

List<Reminders> reminds = new List<Reminders>();
...
foreach (Reminders remind in reminds)
{
    ....
    remind.Checked = true;
}
Run Code Online (Sandbox Code Playgroud)

您不得修改正在迭代的列表。