使用默认值将null传递给可选参数

时间:2010-09-22 15:33:45

标签: vb.net parameters optional-parameters

我认为这是一个非常基本的问题,但我只想澄清一下。如果我有一个带空值的变量,并将其作为可选参数传递,参数是否会获得空值或默认值?

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概念差异

2 个答案:

答案 0 :(得分:1)

“在游戏3中,someval2等于什么?可以为空或者?”它将为空。

嗯,实际上,你不能调用3 ...它不能编译,因为你不能将对象作为字符串参数传递。但是,如果你将dim obj作为string = null,那么它将为null。

答案 1 :(得分:0)

如果没有为可选参数提供任何参数值,则将使用该参数的默认值。

如果将Nothing传递给可选参数,则参数值将为Nothing,并且默认值将被忽略。