的问题可能是由您的数组包含整数的事实引起的,但你正在寻找的值是短。请看下面的例子:
Dim myArray As Integer() = {5}
Dim value As Short = 5
Console.WriteLine(Array.IndexOf(myArray, value)) ' Prints -1
如果数组包含整数,你需要转换你的短成一个完整的第一,例如,通过使用CInt
:
Dim myArray As Integer() = {5}
Dim value As Short = 5
Console.WriteLine(Array.IndexOf(myArray, CInt(value))) ' Prints 0
编辑:注意声明类型与此无关。让我们来声明数组作为对象,因为这是你在你的评论中提及了什么(请注意,下面的示例需要Option Strict Off选项,这是坏的):
Dim myArray As Object = New Integer() {5}
Dim value As Object = 5S ' Short literal
Console.WriteLine(Array.IndexOf(myArray, value)) ' still returns -1
Console.WriteLine(Array.IndexOf(myArray, CInt(value))) ' returns 0
注意:您可以使转换隐含的声明您的功能为Public Sub SomeFunction(ByVal test As Integer)
。
你的数组中有什么? –
编辑我的问题来回答你的问题。 – user2322507
向我们显示实际的代码。我还没有发现任何缺陷IndexOf –