我现在已经尝试了一下,我完全不知道为什么我的程序会这样做。 我试图搜索谷歌和这里,但也许我只是麻烦地说我的问题或我是唯一一个有这个问题。
无论如何,所以这是我的问题:
Protected myList as List(Of CustomClass) = new List(Of CustomClass)
Public Sub mySub()
Dim ListCount as Integer = myList.Count
ListCount = ListCount - 1
For i As Integer = 0 To ListCount Step 1
If myList(i).MyStatus = FMyStatus Then
myList(i).MyFunction.Invoke()
myList.RemoveAt(i)
End If
Next
End Sub
这会在我大于myList-index的时候抛出一个异常。 问题是ListCount即使我减少1仍然保持不变,它不可能减少1。 但是,如果我将它减少2,它就完全没问题了。
这是常见的吗?我错过了什么吗?我已经尝试在msdn网站上找到List.Count属性的东西,但是找不到能解释我为什么不能将值减少1的东西。 希望你们能够启发我。 欢呼声。答案 0 :(得分:1)
您需要向后循环才能完成此任务:
For i As Integer = myList.Count - 1 To 0 Step -1
如果你走另一条路,当你删除一个项目时,列表会变小,但你仍然试图转到原始列表的末尾。