1

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

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,但调用 3 中someval2等于什么?可以为空还是酒吧?

另外 - 我对 vb.net 比较陌生,我认为我不完全理解与 C# 的 null/nullable/nothing 概念差异

4

2 回答 2

1

“调用 3 中的 someval2 等于什么?可以为空还是 bar?” 它将为空。

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

于 2010-09-22T15:42:07.110 回答
1

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

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

于 2018-06-20T13:52:57.323 回答