以下内容:
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
给我错误:需要常量表达式。 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
无论哪种情况都没有奏效。 这是我一直在使用的资源:https://msdn.microsoft.com/en-us/library/bb531253.aspx
无论如何,谢谢你的时间。
我发现了类似的问题:
答案 0 :(得分:0)
正如原始帖子的评论中所建议的那样,lambda不能用作可选参数。
另一种方法是使用没有参数的版本和带有委托参数的版本重载函数(在您的示例中为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