未从LIST删除的项目

时间:2014-01-13 17:10:07

标签: vb.net

我有一个列表,用于保存命令队列。

我需要循环遍历队列中的每个项目,执行命令,随着它继续删除它们。

项目未从队列中删除。

这是一个快速测试代码,它不起作用:

Dim MyList As New List(Of String)

For i = 0 To 5
   MyList.Add(i)
Next
MsgBox(MyList.Count) 'returns 6

MyList.Remove(2)
MyList.Remove(4)

For i = 0 To MyList.Count - 1
   MsgBox(MyList(i)) 'pops up 6 times, including the 2 "deleted" ones.
Next
MsgBox(MyList.Count) 'still returns 6

不会删除这些项目。

1 个答案:

答案 0 :(得分:0)

MyList.Remove来电中,您的意思是删除值2还是删除2索引?如果您打算在索引处删除,请使用RemoveAt

MyList.RemoveAt(2)

否则,如果您的代码实际上与您发布的完全相同,那么它应该可以正常工作。我把它插入一个小的控制台应用程序,它工作:

Sub Main()
    Dim MyList As New List(Of String)

    For i = 0 To 5
        MyList.Add(i)
        Console.WriteLine("i: {0}", i)
    Next
    Console.WriteLine("MyList.Count: {0}", MyList.Count)

    MyList.Remove(2)
    MyList.Remove(4)

    For i = 0 To MyList.Count - 1
        Console.WriteLine("MyList({0}): {1}", i, MyList(i))
    Next
    Console.WriteLine("MyList.Count: {0}", MyList.Count)
    Console.Read()
End Sub

输出:

i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
MyList.Count: 6
MyList(0): 0
MyList(1): 1
MyList(2): 3
MyList(3): 5
MyList.Count: 4