我有以下代码
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");
}
当我运行此代码时,我得到以下错误
我该怎么办?
答案 0 :(得分:3)
使用foreach语句迭代集合时,无法更改正在迭代的集合,因为迭代器会在实际位置丢失。
有几种解决方案:
答案 1 :(得分:1)
foreach
期望收集保持不变。您可以尝试使用普通for
循环。
请参阅MSDN:
foreach 语句用于遍历集合以获取所需的信息,但不能用于在源集合中添加或删除项目以避免不可预测的副作用。如果您需要在源集合中添加或删除项目,请使用 for 循环。