c# - "Collection was modified..."问题

标签 c# collections exception

我有一个函数可以检查对象列表以查看它们是否已被单击并相应地触发 OnClick 事件。我相信该功能工作正常,但我遇到了问题:

当我连接到其中一个 OnClick 事件并将该元素删除并插入到列表中的不同位置(此程序的典型功能)时,我收到“集合已修改...”错误。

我相信我明白发生了什么:

  • 该函数循环遍历每个对象,必要时触发 OnClick 事件
  • 一个事件被触发,对象根据钩子(Hook)函数改变列表中的位置
  • 在遍历集合时修改集合抛出异常

我的问题是,如何让函数遍历所有对象,在适当的时间触发必要的事件,并仍然为用户提供操纵对象在列表中的位置的选项?

最佳答案

这类问题一般有两种解决方法:

  • 复印一份 list 。遍历副本。
  • 列出需要进行的更改。完成迭代后应用更改。

如果您想将进行更改的代码与进行循环的代码分离,“使用索引”选项听起来不太合适。

关于c# - "Collection was modified..."问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901749/

相关文章:

java - 哪个集合用于一对多类型的数据?

javascript - 收到 JQUERY "syntax error, unrecognized expression"

wpf - 如何将绑定(bind)错误转换为运行时异常?

c# - 未呈现后台工作窗口控件

c# - 替换 .net 中的标准异常/错误表单

c# 相当于 VB 6's ' StrConv'

objective-c - Objective-C - 具有重复键的键值对集合

c# - 为什么 Array.IndexOf 不像 List<T> 那样检查 IEquatable?

java - Eclipse:在 block 中查找可以抛出异常的行

winforms - 为什么在我的 Visual Studio 中所有类文件都使用 .vb 扩展名创建,而不是作为 .cs 文件创建?我需要 .cs 文件