编写一些代码以加载我的应用程序设置时遇到问题 - 以下代码会产生InvalidOperationException错误:
For Each c As MapInfo In CurrentMaps
AddMap(c, False)
Next
调试器突出显示Next部分,从MSDN 页面上的错误来看,这是因为集合(CurrentMaps)与上次碰撞枚举器(以处理For Each)时发生了某种变化。
但是,不确定为什么会发生这种情况,因为AddMap采用MapInfo ByVal 并且不接触输入(因此集合不会更改)。
我把它改成了这个,效果很好:
For i As Integer = 0 To CurrentMaps.Count - 1
AddMap(CurrentMaps(i), False)
Next
这些在功能上应该是一样的,对吧?知道为什么For Each不起作用吗?
编辑:
啊想通了 - 问题是我使用 CurrentMaps 作为临时变量(收集跟踪当前地图),并且 AddMap 通常在应用程序中用于添加新地图(这意味着更新 UI 并将其添加到 CurrentMaps )。
在这里(加载应用程序时),我只是使用 AddMap 来更新 UI,但是将项目添加到 CurrentMaps 的子调用仍然存在,因此它确实在修改 CurrentMaps。
感谢您的输入,所有!