Vb.net 如何将lambda函数作为条件参数的默认值传递到常规函数中?
以下是:Vb.net 如何将lambda函数作为条件参数的默认值传递到常规函数中?,vb.net,Vb.net,以下是: Delegate Function OperationDelegate(ByVal x As Double) As Double Public Function test(Optional ByRef operation As OperationDelegate = AddressOf DefaultOperation) As Double Return operation.Invoke(3) End Function 给我一个错误:常量表达式是必需的。Addressof D
Delegate Function OperationDelegate(ByVal x As Double) As Double
Public Function test(Optional ByRef operation As OperationDelegate = AddressOf DefaultOperation) As Double
Return operation.Invoke(3)
End Function
给我一个错误:常量表达式是必需的。Addressof DefaultOperation导致使用Visual Studio 2013时出错
我尝试过用以下两种方法定义DefaultOperation
Public Function DefaultOperation(ByVal x As Double) As Double
Return x
End Function
Dim DefaultOperation As OperationDelegate = Function(x As Double) As Double
Return x
End Function
无论哪种情况,它都没有起作用。
这是我一直在使用的资源:
无论如何,谢谢你的时间
我发现了一个类似的问题:
Delegate Function OperationDelegate(ByVal x As Double) As Double
Public Function test() As Double
Return test(AddressOf OperationDelegate)
End Function
Public Function test(operation As OperationDelegate) As Double
Return operation.Invoke(3)
End Function
另一种方法是使用不带参数的版本和带有委托参数的版本重载函数(在您的示例中为test)
Delegate Function OperationDelegate(ByVal x As Double) As Double
Public Function test() As Double
Return test(AddressOf OperationDelegate)
End Function
Public Function test(operation As OperationDelegate) As Double
Return operation.Invoke(3)
End Function
正如您从链接到的类似问题中所看到的。可选参数的默认值必须是常量(其值必须在编译时已知)。不可能是兰姆达。