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

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

我已经试了一段时间了,我完全不明白为什么我的程序会这样。 我尝试在 google 和此处进行搜索,但也许我无法正确表述我的问题,或者我是唯一遇到此问题的人。

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

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 的内容。

希望大家多多赐教。 干杯。

您需要向后循环才能完成此操作:

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

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