加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB.Net List.Find.将值传递给谓词

发布时间:2020-12-17 00:28:27 所属栏目:大数据 来源:网络整理
导读:使用List.Find与自定义谓词有点麻烦 我有一个这样做的功能 private function test () Dim test As Integer = keys.Find(AddressOf FindByOldKeyAndName).NewKey 这里是谓词的功能 Private Shared Function FindByOldKeyAndName(ByVal k As KeyObj) As Boolea
使用List.Find与自定义谓词有点麻烦

我有一个这样做的功能

private function test ()
    Dim test As Integer = keys.Find(AddressOf FindByOldKeyAndName).NewKey

这里是谓词的功能

Private Shared Function FindByOldKeyAndName(ByVal k As KeyObj) As Boolean
        If k.OldKey = currentKey.OldKey And k.KeyName = currentKey.KeyName Then
            Return True
        Else
            Return False
        End If


    End Function

通过这样做,这意味着我必须在类中有一个共享的“currentKey”对象,我知道必须有一种方式传递我对CurrentKey感兴趣的值(即keyname和oldkey)

理想情况下,我想把它称为
keys.Find(AddressOf FindByOldKeyAndName(Name,OldVal))

但是当我这样做我会得到编译错误.

我如何称这种方法并传递值?

您可以使用VS2008及以上版本的lambda表达式清理该问题.一个愚蠢的例子:
Sub Main()
    Dim lst As New List(Of Integer)
    lst.Add(1)
    lst.Add(2)
    Dim toFind = 2
    Dim found = lst.Find(Function(value As Integer) value = toFind)
    Console.WriteLine(found)
    Console.ReadLine()
End Sub

对于早期版本,您必须使“currentKey”成为您类的私有字段.检查我的代码在this thread为一个更清洁的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读