vb.net传递了一个值,该值将告诉函数使用其默认值

时间:2018-10-27 18:55:22

标签: vb.net

使用默认参数的q / a太多了,我很难找到想要的东西。不是说我不能用一个(或多个)if ... then ... end if来解决这个问题,而是我想找出是否有一种(更好的)方法(简单,内联,例如通过使用) IIf)。所以我的问题是这样的: 是否有任何关键字可以告诉被调用函数应使用默认值而不是该关键字。例如:

  Public Function A(Optional ConnectionString As String = Nothing) As String
    A = B(IIf(ConnectionString Is Nothing, "keyword", ConnectionString))
  End Function

  Public Function B(Optional ConnectionString As String = "Something") As String
    'do something
  End Function

为什么我需要这个只是为了更简洁的代码。有时,这些函数中包含更多条件,并且嵌套更多if(s)会使代码变得繁琐。

谢谢

编辑

我现在正在这样工作(不想将此作为解决方案):

  Public Function A(Optional ConnectionString As String = Nothing) As String
    if ConnectionString Is Nothing then
      A = B()
    else
      A = B(ConnectionString)
    end if
  End Function

所以,我可以这样写吗(我希望这是可能的):

  Public Function A(Optional ConnectionString As String = Nothing) As String
      A = B(if(ConnectionString, default))
    end if
  End Function

默认值将恢复为B函数中参数的默认值。

编辑2

我试图将连接字符串作为函数A中可选参数的默认值分配,但是它不能以某种方式起作用,因此我选择了我在问题中写到的解决方案。 Optional parameter here doesn't work, look at this picture

1 个答案:

答案 0 :(得分:0)


编辑

您几乎可以做到的有趣的事情。虽然花了我足够长的时间才能理解你想要的东西!

Public Function A(Optional ConnectionString As String = Nothing) As String
    A = If(ConnectionString is Nothing, B(), B(ConnectionString))
End Function

此行下方的原始答案

同一函数调用可以有多个重载。

Public Sub Example()
    Example("DefaultValue")
End Sub

Public Sub Example(ByVal value As String)
    'do things
End Sub

在此示例中,您可以调用以下方法之一:

Example()    'This will use the default value by calling the other sub with an overload you already defines as "default"

Example("SomeString")    'This is your normal overloaded Sub

只要不是不可能的区分,就可以根据需要任意设置。

玩得开心!