2012-11-28 31 views
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)具有单词“美国”,但由于某种原因,它不工作,不删除其他项目。有什么建议么?

+2

你通过了你的代码吗?因为某处,你的假设是错误的。例如,你确定它是“美国”而不是“美国”吗?或者情况不同?最终我们'不能在没有看到'结果'的实际值的情况下解决这个问题,所以现在的问题是无法回答的,除非说'再次检查...' –

+0

@丹Puzey我调试和基金索引号。 (2)在结果列表中有'US'。那么问题是什么? – HShbib

+1

当你遍历你的代码时,它是否进入'if'语句并跨越'result.Remove(7)'行?此外,Result是a List的类型吗?因为如果是这样,我怀疑你的意思是'result.RemoveAt(7)' –

回答

1

正如丹Puzey指出的那样,Remove方法从列表中移除给定的对象。因此,当您拨打Remove(7)时,它不会从列表中删除第七个项目,而是从列表中删除数字7。我怀疑你实际上想要做的是删除第七个元素(无论发生什么对象),在这种情况下,你想调用RemoveAt(7)

1

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

TextBox8.Text =结果(11)“索引超出范围

这是必然的,因为你有12项(索引从0到11)。你删除索引号码7.
所以,现在你有11个项目(索引0到10)。您无法从11中获得数值。
实际删除工作正常。你有什么问题? 的,如果第二部分:

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

只能如果result.count <> 12 其中也有问题,因为如果result.Count = 5,你不能删除(11)。
也许最好告诉你想达到什么。

*** PS。我想象着你的列表是类似的东西:

Dim result As New List(Of String) 
    For i = 0 To 11 
     result.Insert(i, i.ToString) 
    Next 
    result(2) = "US" 
相关问题