gpt4 book ai didi

.net - Func(Of Tin, Tout) 使用带有 ByRef 参数的 lambda 表达式给出不兼容的签名错误

转载 作者:行者123 更新时间:2023-12-03 23:59:13 25 4
gpt4 key购买 nike

为什么会这样:

Private [Function] As Func(Of Double, String) = Function(ByRef z As Double) z.ToString

给出以下错误:

Nested function does not have a signature that is compatible with delegate String)'.



虽然这样:
Private [Function] As Func(Of Double, String) = Function(ByVal z As Double) z.ToString

才不是? (区别在于 ByRef/ByVal)

此外,我该如何实现这样的事情?

最佳答案

您收到此错误是因为委托(delegate)类型 函数 (ByVal z As Double) 作为字符串 不兼容函数(ByRef z As Double)作为字符串 .你需要完全匹配。

此外,无论您是否使用匿名函数,都不能使用 ByRef 参数(C# 中的 ref 或 out)声明 Func(Of ...) 泛型委托(delegate)。

但是您可以声明您的委托(delegate)类型,然后即使与您的匿名函数一起使用它

Delegate Function ToStringDelegate(ByRef value As Double) As String

Sub Main()
Dim Del As ToStringDelegate = Function(ByRef value As Double) value.ToString()
End Sub

或者您可以使用隐式类型(如果选项推断已打开)
Dim Del = Function(ByRef value As Double) value.ToString()

关于.net - Func(Of Tin, Tout) 使用带有 ByRef 参数的 lambda 表达式给出不兼容的签名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5240096/

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