我想找到数组中最后一次出现值的引用。
数组的值格式类似于(0,7,7,7,7,7,14,15,15,15,15,15,15,16)
,第二列中的布尔值。
我相信FINDLAST是我正在寻找的功能,但我无法使语法工作。
编辑:
我有一个在数组CursorPosition
中出现的位置,并且我希望找到数组中的最后一个出现位置。我的代码目前是:
CursorPosition = position.FindLast(position, position(0, CursorPosition))
我目前收到3个错误:
为'公共共享函数FindLast(Of T)输入参数'T'(array()为T,匹配As System.Predicate(Of T))因为T'无法推断。
类型参数推断对于'公共共享函数FindLast(Of T)的类型参数'T'失败(array()为T,匹配As System.Predicate(Of T))为T'。无法从传递给参数'array'的参数推断出类型参数。
类型参数推断对于'公共共享函数FindLast(Of T)的类型参数'T'失败(array()为T,匹配As System.Predicate(Of T))为T'。无法从传递给参数'match'的参数推断出类型参数。
答案 0 :(得分:1)
您正在讨论Array.FindLast()和Array.FindLastIndex()方法。最后一个参数是谓词,一个委托类型。换句话说,该方法需要一个可以传递候选值的函数,并且当匹配时它应该返回True。
使用lambda expression最容易实现这样的谓词。查看链接了解详细信息。一个简单的例子:
Dim position() As Integer = {1, 2, 2, 3, 3, 3}
Dim tofind = 2
Dim index = Array.FindLastIndex(position, Function(value) value = tofind)