我知道它通常是一个很大的No-No来修改你正在迭代的集合,但不幸的是我没有设计我试图修改的代码。到处都是以下事情:InvalidOperationException VB.Net通用集合?
for each log in Logs
logs.Delete(log.LogId)
Next
删除几乎只是从数据库中删除日志,并将其从集合中删除。以前,日志对象使用的是非通用集合。我改变它使用集合(日志),所以我可以LINQify对象。现在,每次我调用下一个/ .MoveNext被调用后第一次删除发生以下错误: InvalidOperationException: “集合被修改;枚举操作可能不会执行。”
我明白为什么我得到错误,但我不明白为什么它从未发生与非通用版本。无论如何要解决这个错误?我真的没有办法花时间去改变每个这样的删除日志(代码库很大)的地方。我想删除Delete函数中的代码,将它从当前集合中删除,因为我假设没有代码在集合完成后对集合进行任何操作,但是您知道当您假设时发生了什么。
您使用FOR EACH在“非一般都'实施? –
是的,这种方式日志总是被删除。只是不明白为什么之前没有例外。 – coding4fun
什么是非泛型集合类型? – msarchet