1

我正在尝试使用项目的索引将列表中的项目与字符串进行比较。但是,代码并没有做它应该做的事情。它应该删除列表中的另一个项目。

这是代码:

If (result.Count = 12) Then
    If (result.item(2) = "US") Then
        result.Remove(7)
    End If
    TextBox8.Text = result(11)
Else
    result.Remove(11)
    TextBox8.Text = ""
End If

根据结果​​,索引 (2) 中包含“US”一词,但由于某种原因它无法正常工作并且没有删除其他项目。有什么建议么?

4

2 回答 2

1

我试过你的代码。所以你有一个错误:

TextBox8.Text = result(11) '索引超出范围

这是合乎逻辑的,因为您有 12 个项目(索引从 0 到 11)。您删除了索引号 7。
所以现在您有 11 个项目(索引 0 到 10)。您无法从 11 中获取值。
实际的删除工作完美。你有什么问题?if的第二部分:

    Else
        result.Remove(11)
        TextBox8.Text = ""
    End If

仅当 result.count <>12 时才有效,这也有问题,因为如果 result.Count =5 你不能删除(11)。
也许最好说出你想要达到的目标。

***附言。我想象你的清单是这样的:

    Dim result As New List(Of String)
    For i = 0 To 11
        result.Insert(i, i.ToString)
    Next
    result(2) = "US"
于 2012-11-28T12:42:31.843 回答
1

正如 Dan Puzey 所指出的,该Remove方法从列表中删除了给定的对象。因此,当您调用 时Remove(7),它不会从列表中删除第七个项目,而是从列表中删除数字 7 本身。我怀疑你实际上想要做的是删除第七个元素(无论碰巧是什么对象),在这种情况下你想改为调用RemoveAt(7).

于 2012-11-28T13:24:49.400 回答