Visual Studio(List.Count - 1)= List.Count

时间:2015-02-18 20:14:53

标签: vb.net list count

我现在已经尝试了一下,我完全不知道为什么我的程序会这样做。 我试图搜索谷歌和这里,但也许我只是麻烦地说我的问题或我是唯一一个有这个问题。

无论如何,所以这是我的问题:

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的东西。

希望你们能够启发我。 欢呼声。

1 个答案:

答案 0 :(得分:1)

您需要向后循环才能完成此任务:

For i As Integer = myList.Count - 1 To 0 Step -1

如果你走另一条路,当你删除一个项目时,列表会变小,但你仍然试图转到原始列表的末尾。