查询ArrayList返回Arraylist的索引

时间:2019-05-29 09:49:53

标签: vb.net

我有一个我期望的功能,但没有做到。

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。

有人可以校对该功能吗?

2 个答案:

答案 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