Vb.net 未从列表中删除的项目
我有一个用于保存命令队列的列表 我需要循环遍历队列的每个项目,执行命令,并在执行过程中删除它们 未从队列中删除项目 下面是一个也不起作用的快速测试代码:Vb.net 未从列表中删除的项目,vb.net,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
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
项目不会被删除。在您的MyList中。删除调用,您是要删除值2还是在索引2处删除?如果要在索引处删除,请使用RemoveAt:
否则,如果您的代码实际上与您发布的代码完全相同,那么它应该可以正常工作。我将其插入了一个小型控制台应用程序,它成功了:
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
我的名单。计数:6
MyList0:0
MyList1:1
MyList2:3
MyList3:5
我的名单。计数:4
另一种选择是队列类型;Queue.dequeue您的快速测试代码与您描述的不同。只会弹出4条消息,最后一个消息框会弹出4条。另外,在查看您的问题历史记录后,请阅读元站点上关于标题中标签使用的帖子:@valverij对不起!我要把它们删掉。我需要删除索引。因此,第二项等。谢谢。我来看看这个。
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