我认为这是一个非常基本的问题,但我只想澄清一下。如果我有一个带空值的变量,并将其作为可选参数传递,参数是否会获得空值或默认值?
dim str As String = "foo"
dim obj As Object
//call 1
Request(str, str)
//call 2
Request(str)
//call 3
Request(str, obj)
public Function Request(byVal someVal As String, Optional ByVal someVal2 As String = "bar")
...
我知道调用1会在函数内部生成someval == someval2 == "foo"
,调用2会生成someval == "foo"
和someval2 == "bar"
,调用3会生成someval == foo
但是someval2
是什么{{1}} 1}}等于通话3?可空或吧?
另外 - 我对vb.net比较新,我认为我不完全理解与C#
的null / nullable / nothing概念差异答案 0 :(得分:1)
“在游戏3中,someval2等于什么?可以为空或者?”它将为空。
嗯,实际上,你不能调用3 ...它不能编译,因为你不能将对象作为字符串参数传递。但是,如果你将dim obj作为string = null,那么它将为null。
答案 1 :(得分:0)
如果没有为可选参数提供任何参数值,则将使用该参数的默认值。
如果将Nothing
传递给可选参数,则参数值将为Nothing
,并且默认值将被忽略。