如何使用来自功能参数的值作为VB.net中可选参数的默认值?
这对我不起作用:
Public Function func(ByVal param1 As String, ByVal param2 As String, ByVal Optional param3 As String = param1) As String
Return ""
End Function
答案 0 :(得分:5)
请参阅documentation中的Optional
参数,以了解为什么它不起作用:
过程定义中的每个可选参数都必须指定一个默认值。
可选参数的默认值必须为恒定表达式。
过程定义中位于可选参数之后的每个参数也必须是可选的。
因此,您将需要像这样的东西才能正常工作:
Function func(ByVal param1 As String, ByVal param2 As String, ByVal Optional param3 As String = "") As String
If(String.IsNullOrEmpty(param3) Then
param3 = param1
End If
Return ""
End Function
但是,您可以通过重载而不是Optional
来解决此问题:
Function func(ByVal param1 As String, ByVal param2 As String) As String
Return func(param1, param2, param1)
End Function
Function func(ByVal param1 As String, ByVal param2 As String, ByVal param3 as String) As String
Return ""
End Function
虽然可能不是最清晰的实现,所以如果您执行此操作,请确保在该方法中添加XML注释,以便易于理解用法。