gpt4 book ai didi

arrays - 使用 Array.FindAll 方法查找满足条件的子数组

转载 作者:行者123 更新时间:2023-12-04 02:56:14 25 4
gpt4 key购买 nike

我有一个 Visual Basic.Net 应用程序,需要在数组中找到满足特定条件的所有元素。

Dim result As my_obj() = Array.FindAll(lstData, HasToBeSent)

函数 HasToBeSent 的定义如下:

Private Function HasToBeSent(ByVal cta As my_obj) As Boolean
Return cta.IsSent
End Function

然而这并没有编译,它说我没有在 Private Function HasToBeSent(ByVal cta As my_obj) As Boolean 中为参数 cta 指定参数/p>

我使用的是 Visual Studio 2005,因此我有 VB.Net 8.0。我猜建议的答案是针对更高版本的 VB.Net。因为当我将之前的代码替换为

Dim result As my_obj() = Array.FindAll(lstData, Function(cta) HasToBeSent(cta))

它说:“预期的表达”

我该如何解决这个问题?

最佳答案

保留您的 HasToBeSent 定义,但向其添加 Shared 关键字以使其成为静态的(实际上这可能是可选的,但由于此代码不依赖于任何其他内容在你的类里面,这可能是一个很好的设计决定)。

Private Shared Function HasToBeSent(ByVal cta As my_obj) As Boolean
Return cta.IsSent
End Function

然后在 Array.FindAll() 中,给它你函数的“地址”:

Array.FindAll(lstData, AddressOf HasToBeSent)

如果升级到较新版本的 VB,则可以内联委托(delegate):

Array.FindAll(lstData, Function(cta) cta.IsSent)

要保留 HasToBeSent 函数,您可以简单地调用它:

Array.FindAll(lstData, Function(cta) HasToBeSent(cta))

关于arrays - 使用 Array.FindAll 方法查找满足条件的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com