gpt4 book ai didi

vb.net - 嵌套函数与委托(delegate)没有相同的签名

转载 作者:行者123 更新时间:2023-12-04 16:11:26 24 4
gpt4 key购买 nike

我试图在 VB 中实现类似柯里化(Currying)的效果。我希望能够做到这一点:

Dim wrap = WrapNumber("-")
wrap(5) 'returns "-5-"

这是我的功能:

Private Function WrapNumber(ByVal separator As String) As Func(Of Integer, String)

Return Function(ByRef number As Integer) As String
Return separator + number + separator
End Function

End Function

我在 Return 行收到一条错误消息:

Nested function does not have the same signature as delegate Func(Of Integer, String)

我不确定为什么会收到此错误。函数 WrapNumber 返回一个函数,它接受一个 Integer 并返回一个 String,所以据我所知,它与 具有相同的类型code>FuncWrapNumber 签名中给出。

最佳答案

如果您打开 Option Strict On,它会告诉您很多问题所在。除了注释中所述不需要 ByRef 之外,连接还试图将分隔符视为 double 。如果您进行了这些更改,那么它就可以正常工作:

Dim wrap = WrapNumber("-")
Dim test As String = wrap(5)
'test is equal to "-5-"

Private Function WrapNumber(ByVal separator As String) As Func(Of Integer, String)
Return Function(number As Integer) As String
Return separator & number.ToString & separator
End Function
End Function

关于vb.net - 嵌套函数与委托(delegate)没有相同的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39856300/

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