【发布时间】:2014-12-22 13:36:40
【问题描述】:
我有一个这样的数组列表:
Dim valori As New List(Of String)
我将替换数组的最后一个单元格,所以我编写了以下代码:
For x As Integer = 0 To valori.Count - 1
If valori.Count <> 0 Then
item = valori(x).Split(",")
Dim prop = item(4)
Dim decimalVal = System.Convert.ToDecimal(prop)
If prop <> 0 Then
valori(x).Replace(prop, "14") 'should update the array content
MessageBox.Show(valori(x))
End If
End If
Next x
怎么看,我的数组是以String为特征的,所以我在第一次拆分数组时,得到了最后一个单元格(4)。我将此单元格保存在 decimalVal 变量中,然后将此值转换为十进制。 此时我将decimalVal的值与0(递归函数)进行比较。 我发现自己在一个带有“x”索引的 for 循环中,所以我登录到 valori(x) 索引,然后用 14 替换道具值,我输入 14 来尝试,但我会简单地减少值...... 貌似不是替换成功,数组不变,怎么回事?
【问题讨论】:
-
If valori.Count <> 0 Then是多余的 - 此条件始终为True。如果valori.Count = 0将永远不会执行循环。valori的内容是什么?你的代码会产生什么?你期待什么? -
valori(x).Replace(prop, "14")这也是错误的。字符串是不可变的(不能更改);必须使用新内容创建一个新内容。valori(x) = valori(x).Replace(prop, "14")。valori也不是数组或数组列表。它是一个列表或更一般地,一个集合 -
valori.count 包含数组的元素。我希望数组的每个元素都被拆分,并且第四个单元格减少状态数,我通过将 15 替换为 14 来做到这一点,依此类推,但这不会发生。
-
valori(x) = valori(x).Replace(prop, System.Threading.Interlocked.Decrement(prop)) 给我这个错误信息:AmbiguosMatchException
标签: .net arrays vb.net string generic-list