2014-01-13 198 views
0

我有一个列表,我正在使用它来存放一个命令队列。未从列表中删除的项目

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

项目未从队列中删除。

这里是一个快速测试代码不工作,要么:

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

正如有队列类型的替代; '队列 .Dequeue' –

+0

你的快速测试代码不会做你所描述的。只有4条消息“弹出”,最后一个消息框弹出4. – LarsTech

+0

另外,在查看您的问题历史记录后,请阅读元网站上关于标题中标签使用的帖子:[应该包括“标签”在他们的标题?](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles) – valverij

回答

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 
+0

我需要删除索引。所以第二项等谢谢。我会看看这个。 – MRC