我有一个我期望的功能,但没有做到。
Private Function getIndexOfArrayList(arrlist As Array) As Integer
For index As Integer = 0 To arrlist.Length - 1 Step 1
If (arrlist(index).Equals(If((mscbpisdepaap.Text.ToString = mscbpisdepaap.SelectedItem.ToString), mscbpisdepaap.SelectedItem.ToString, String.Empty))) Then
Return index
End If
Next
Return -1
End Function
该函数应该将一组arraylist与equal属性进行比较。如果是这样,则应返回索引。如果不是,则应返回-1
但是此功能没有做到这一点,正如我所期望的那样,它总是结果为-1。
我在这里的操作员是否犯了一些错误?
如果我不使用Tenary运算符进行操作,则我得到了正确的索引。
该函数应为我提供正确的索引,如果没有索引,则应检索-1。
有人可以校对该功能吗?
答案 0 :(得分:1)
不要像使用arrList
的{{1}}那样传递Array
String()
是您的变量名的不幸选择。尽管已经过时了arrList
之类的东西。同样,您的功能名称具有误导性;您正在处理的不是ArrayList
数组。
删除外部If中多余的括号。
不要在ArrayList
属性上调用.ToString
,因为它已经是Text
。
您内部的If条件周围还有另外一组括号。
String
Private A() As String = {"Mathew", "Mark", "Luke", "John"}
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim i = getIndexOfArray(A)
Debug.Print(i.ToString)
End Sub
Private Function getIndexOfArray(arrlist As String()) As Integer
For index As Integer = 0 To arrlist.Length - 1 Step 1
If arrlist(index).Equals(If(ComboBox1.Text = ComboBox1.SelectedItem.ToString, ComboBox1.SelectedItem.ToString, String.Empty)) Then
Return index
End If
Next
Return -1
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ComboBox1.Items.AddRange(A)
End Sub
是否总是等于SelectedItem
属性?
答案 1 :(得分:0)
Private Function getIndexOf(items() As String) As Integer
Dim value = If( mscbpisdepaap.Text = mscbpisdepaap.SelectedItem.ToString(), mscbpisdepaap.Text, "")
Return items.IndexOf(value)
End Function