Bri*_*ahy 9 .net vb.net lambda func byref
为什么这样:
Private [Function] As Func(Of Double, String) = Function(ByRef z As Double) z.ToString
Run Code Online (Sandbox Code Playgroud)
给出以下错误:
嵌套函数没有与委托String)兼容的签名.
这个:
Private [Function] As Func(Of Double, String) = Function(ByVal z As Double) z.ToString
Run Code Online (Sandbox Code Playgroud)
才不是?(区别是ByRef/ByVal)
而且,我怎么能实现这样的事情呢?
Art*_*nko 11
您收到此错误,因为委托类型函数(ByVal z As Double)As String与Function(ByRef z As Double)As String不兼容.你需要完全匹配.
你也不能使用ByRef参数声明Func(Of ...)泛型委托(在C#中为ref或out),无论你是否使用匿名函数.
但您可以声明委托类型,然后使用匿名函数使用它
Delegate Function ToStringDelegate(ByRef value As Double) As String
Sub Main()
Dim Del As ToStringDelegate = Function(ByRef value As Double) value.ToString()
End Sub
Run Code Online (Sandbox Code Playgroud)
或者您可以使用隐式类型(如果启用了选项推断)
Dim Del = Function(ByRef value As Double) value.ToString()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4239 次 |
| 最近记录: |