在数组上使用'Contains'

win*_*sgm 5 arrays vb6

好的,所以我对VB6不是很熟悉,但是我想看一个数组是否包含一个值.这就是我所拥有的,但它给我带来了错误.可能是"passedValue"是错误类型的问题,但我不这么认为.

    Dim transCodes As Variant
    transCodes = Array(40, 41, 42, 43)
    If (transCodes.Contains("passedValue")) Then
    *Do Stuff*
    End If
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激!

UPDATE

如果没有纠正我的语法,你能给我一个我可能用来确保"passedValue"属于正确类型的强制转换/转换的例子吗?

更新我的更新

那么VB6中没有'Contains'方法吗?做这个简单任务的任何其他方法?

Dea*_*nna 11

VB6 Contains在数组上没有本机方法.

您最好的选择是依次遍历数组检查每个项目:

Found = False
For Index = LBound(transCodes) To UBound(transCodes )
  If transCodes(Index) = PassedValue Then
    Found = True
    Exit For
  End If
Next

If Found Then
  'Do stuff
  'Index will contain the location it was found
End If
Run Code Online (Sandbox Code Playgroud)

替代方案包括使用集合并尝试根据其值来检索项目,但对于这个简单的情况,这是更多的工作.

  • 唉,哇,VB6 甚至不能做这样简单的事情时,它真的是遗留下来的。我习惯了 C#。现在将尝试并通过它。 (2认同)
  • 请注意,如果您的数组是有序的(如您的示例所示),您可以对其进行优化以执行二进制搜索,而不是遍历整个数组.如果你有一个庞大的数组,这将为你提供更好的性能. (2认同)