C# 集合已修改,枚举可能无法继续

C# 集合已修改,枚举可能无法继续,c#,c#-4.0,collections,C#,C# 4.0,Collections,我有下面的代码 public bool Notify(bool filterStatus) { foreach (IFilterStatusListener listener in listeners) { listener.Update(filterStatus); } return true; } 方法Update递归调用子对象的Notify public void Update(bool status) { this.isFilteredFixe

我有下面的代码

public bool Notify(bool filterStatus)
{
   foreach (IFilterStatusListener listener in listeners)
   {
      listener.Update(filterStatus);
   }
   return true;
}
方法
Update
递归调用子对象的
Notify

public void Update(bool status)
{
   this.isFilteredFixed = false;
   this.Notify(status);
   this.RaisePropertyChanged("IsFiltered");
}
当我运行这段代码时,我得到下面的错误


我该怎么办?

foreach
希望集合保持不变。您可以尝试正常的
for
循环

见:

foreach语句用于遍历集合以获取所需信息,但不能用于从源集合中添加或删除项以避免不可预测的副作用。如果需要从源集合中添加或删除项,请使用for循环


foreach
希望集合保持不变。您可以尝试正常的
for
循环

见:

foreach语句用于遍历集合以获取所需信息,但不能用于从源集合中添加或删除项以避免不可预测的副作用。如果需要从源集合中添加或删除项,请使用for循环


当您使用foreach语句迭代集合时,您不能更改正在迭代的集合,因为迭代器会丢失它实际所在的位置

有几种解决方案:

  • 使用for循环进行迭代
  • 您可以创建一个正在迭代的集合的副本,并对其进行操作

当您使用foreach语句迭代集合时,您无法更改正在迭代的集合,因为迭代器会丢失它实际所在的位置

有几种解决方案:

  • 使用for循环进行迭代
  • 您可以创建一个正在迭代的集合的副本,并对其进行操作

在迭代集合时尝试更新集合。阅读:这里什么是
listeners
?实现
IFilterStatusListener
的自定义类型对象在迭代集合时尝试更新集合。阅读:这里什么是
listeners
?实现
IFilterStatusListener