vb.net - vb.net 传递一个值,该值将告诉函数使用它的默认值
问题描述
有很多带有默认参数的 q/a,我无法轻松找到我要查找的内容。并不是说我不能用一个(或多个)if ... then ... end if 来解决这个问题,但我想知道是否有更好的方法(更简单,内联,即使用如果)。所以我的问题是:是否有任何关键字可以告诉被调用函数它应该使用默认值而不是该关键字。例如:
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 中可选参数的默认值,但它无法以某种方式工作,因此我选择寻找我在上面的问题中写过的解决方案。
解决方案
编辑
有趣的是,您几乎可以完全做到这一点。不过,我花了足够长的时间来理解你想要什么!
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
只要它们不是无法区分的,您可以拥有任意数量的它们。
玩得开心!
推荐阅读
- typescript - React Navigation useLayoutEffect headerRight 给出 Typescript 错误
- google-maps - 如何在 Dart 的 Uri 查询字符串中有重复的键
- oauth-2.0 - OpenID Connect 或 OAuth2 - 如何从颁发者元数据端点获取身份验证和令牌端点
- javascript - Chrome 扩展发送空的 POST 正文
- r - 当指定为 df$x 时,使函数检测不存在的列
- laravel - 在 laravel 中只从数据库中获取一条记录
- java - 如何在没有 Gradle 或 Maven 的情况下在 Intellij 2020.2 中创建新的 Java EE 项目?
- javascript - React Native 选项卡视图的高度始终等于最高选项卡的高度
- c - 我的 c 程序中的 Makefile 在 CMD 中不起作用,但在 Linux 终端中很好
- python - 无法将关键字“last_activity”解析为字段