Asp.net Array.IndexOf始终返回-1
这是我的密码Asp.net Array.IndexOf始终返回-1,asp.net,arrays,vb.net,Asp.net,Arrays,Vb.net,这是我的密码 Public Sub SomeFucntion(ByVal test As Short) SomeOtherFucntion(MyArray) If Array.IndexOf(MyArray, test) <> -1 //.... End If End Sub 公共子功能(简称ByVal测试) 其他功能(MyArray) If Array.IndexOf(MyArray,test)-1 //.... 如果结束 端接头 测试
Public Sub SomeFucntion(ByVal test As Short)
SomeOtherFucntion(MyArray)
If Array.IndexOf(MyArray, test) <> -1
//....
End If
End Sub
公共子功能(简称ByVal测试)
其他功能(MyArray)
If Array.IndexOf(MyArray,test)-1
//....
如果结束
端接头
测试返回值10
但我得到的IndexOf
值为-1。在
QuickWatch
内部VS 2005
中,当我将值设为10而不是test时,我得到了正确的索引
我的数组是一维数组,现在有2,5和10。因为它得到了10,所以理想情况下应该返回2作为索引。Dim test作为Short=5
Dim test As Short = 5
Dim MyArray() As Short = {1, 3, 4, 5, 7, 3}
If Array.IndexOf(MyArray, test) <> -1 Then
MessageBox.Show("Index Found.")
End If
Dim MyArray()作为Short={1,3,4,5,7,3}
如果Array.IndexOf(MyArray,test)-1,则
Show(“找到索引”)
如果结束
以上工作。由于测试被声明为short,请确保MyArray也被声明为short。Dim test as short=5
Dim MyArray()作为Short={1,3,4,5,7,3}
如果Array.IndexOf(MyArray,test)-1,则
Show(“找到索引”)
如果结束
以上工作。由于test被声明为short,请确保MyArray也被声明为short。问题可能是由于您的数组包含整数,但您要查找的值是short。考虑下面的例子:
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
编辑:请注意,声明的类型与此无关。让我们将数组声明为对象,因为这是您在注释中提到的(请注意,下面的示例需要选项Strict Off,这是错误的):
注意:您可以通过将函数声明为Public Sub-SomeFunction(ByVal test为Integer)
隐式转换。问题可能是由于数组包含整数,但您要查找的值是short。考虑下面的例子:
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
编辑:请注意,声明的类型与此无关。让我们将数组声明为对象,因为这是您在注释中提到的(请注意,下面的示例需要选项Strict Off,这是错误的):
注意:您可以通过将函数声明为Public Sub-SomeFunction(ByVal test为Integer)
数组中有什么?编辑我的问题以回答您的问题。显示实际代码。我还没有在Indexof中发现任何缺陷,这不是您的代码。test未设置为值,Array.IndexOf行可能缺少If语句……数组中有什么?请编辑我的问题以回答您的问题。显示实际代码。我还没有在Indexof中发现任何缺陷,这不是您的代码。测试未设置为值,并且Array.IndexOf行可能缺少一个If语句……我的数组定义是Dim MyArray as Object=Nothing
@user2322507:您将什么分配给MyArray
?m分配一些整数值。然后测试还需要声明为Object,下面再次工作:Dim test as Object=5 Dim MyArray()as Object={1,3,4,5,7,3}如果Array.IndexOf(MyArray,test)-1,那么MessageBox.Show(“Index Found.”)结束,如果您说的是上述代码(原样)不适用于您?因为它适用于我。如果您的代码与上面的代码不同,请将其粘贴到这里。我的数组定义是Dim MyArray as Object=Nothing
@user2322507:您将什么分配给MyArray
?m分配一些整数值。然后,还需要将test声明为Object,下面再次说明:Dim test as Object=5 Dim MyArray()As Object={1,3,4,5,7,3}如果Array.IndexOf(MyArray,test)-1然后是MessageBox.Show(“Index Found.”)如果您说的是上述代码(原样),则结束不适用于您?因为它适用于我。如果您的代码与上述代码不同,请将其粘贴到此处。Dim myArray As Object=Nothing是我的声明。正如前面所建议的,我还尝试将测试变量更改为Object,但没有帮助。@user2322507:声明与此无关。您需要将short转换为整数r、 您可以显式(使用CInt
)或隐式(将函数的参数声明为Integer
而不是Short
).Dim myArray As Object=我的声明没有任何内容。正如前面所建议的,我也尝试将测试变量更改为Object,但没有任何帮助。@user2322507:声明与此无关。您需要将short转换为整数。您可以显式(通过使用CInt
)或隐式执行此操作(将函数的参数声明为Integer
而不是Short
)。