【问题标题】:Check if Optional Parameter has changed检查可选参数是否已更改
【发布时间】:2017-02-01 14:24:35
【问题描述】:
我有一个带有 1 个参数和 10 个可选参数的函数。
可选参数什么都不是。
现在我想检查一个可选参数是否改变了他的值或者函数是用一个可选参数启动的。
想想看,参数可以有值 Nothing 然后函数也返回。
求你的帮助。 :D
【问题讨论】:
-
我没有关注你的问题。您为什么不实际考虑提供示例代码。还可以考虑使用Overloads 而不是可选参数。
标签:
vb.net
function
optional-parameters
【解决方案1】:
10 个参数......这有点过分......而且难以管理。
你最好传递一个类或结构。
检查可选参数是默认值是确定它是否像之前的答案那样预先设置的常用方法。
如果您需要在例程运行时测试对象是否发生变化,则需要通过引用传递一个对象,但如果它最初是作为“无”传递的,那将不起作用。
如果没有更多关于您的使用意图的信息,很难得出结论性的答案。
【解决方案2】:
If Parameter1 Is Nothing then
'Parameter1 changed
EndIf
【解决方案3】:
如果您的其他可选参数什么都不是,我相信它们的引用类型是字符串。
来自 MSDN 的以下内容,用于检查是否存在可选参数 -
过程无法在运行时检测给定参数是否已被省略或调用代码是否明确提供了默认值。如果您需要进行这种区分,您可以将不太可能的值设置为默认值。以下过程定义了可选参数 office,并测试其默认值 QJZ,以查看它是否在调用中被省略:
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters"
End If
' Insert code to notify headquarters or specified office.
结束子
链接可以找到HERE