Встроенный предикат делегата 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
,