Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 未从列表中删除的项目_Vb.net - Fatal编程技术网

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