如何在VB.net中将函数的参数用作其可选参数的默认值

时间:2018-08-30 07:51:07

标签: vb.net parameters optional-parameters

如何使用来自功能参数的值作为VB.net中可选参数的默认值?

这对我不起作用:

Public Function func(ByVal param1 As String, ByVal param2 As String, ByVal Optional param3 As String = param1) As String
   Return ""
End Function

1 个答案:

答案 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注释,以便易于理解用法。