Встроенный предикат делегата VB.NET не работает

Это моя проблема. Если я напишу это -

Private ListValue As Object = Nothing

Private Sub FindIndex(ByVal e As ListBoxFindItemArgs)
    e.IsFound = Object.Equals(ListValue, e.ItemValue)
End Sub

Private Sub SearchValues
    ListValue  = 5
    Index = Me.lst_department.FindItem(0, True, AddressOf FindIndex)
End Sub

Но я просто не в себе, почему этот код, написанный для того же, не работает -

Private Sub SearchValues
    ListValue  = 5
    Index = Me.lst_department.FindItem(0, True, Function(e As ListBoxFindItemArgs) e.IsFound = Object.Equals(ListValue, e.ItemValue))
End Sub

1 ответ

Решение

Поскольку ваш "предикат" не является функцией1, это Sub, Если вы используете самую последнюю версию VB, вы можете написать следующее; в противном случае вам не повезло

Index = Me.lst_department.FindItem(0, True, Sub(e As ListBoxFindItemArgs) e.IsFound = Object.Equals(ListValue, e.ItemValue))

1 Кроме того, это не предикат. Предикат - это особый тип функции, имеющий сигнатуру Function(x As T) As Boolean для какого-то типа T,

Другие вопросы по тегам