将 null 传递给具有默认值的可选参数

发布于 2024-09-24 11:39:11 字数 647 浏览 3 评论 0原文

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

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" 和 < code>someval2 == "bar" 和调用 3 将使 someval == foo 但在调用 3 中 someval2 等于什么?可为空或栏?

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

I think this is a pretty basic question, but I just want to clarify. If I have a variable with a null value, and pass it as a parameter that is optional, will the parameter get the null value, or the default value?

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")
   ...

I know that call 1 will make someval == someval2 == "foo" inside the function, and call 2 will make someval == "foo" and someval2 == "bar" and call 3 will make someval == foo but what is someval2 equal to in call 3? nullable or bar?

Also - I'm relatively new to vb.net and I don't think I fully understand the null/nullable/nothing concept differences from C#

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

意中人 2024-10-01 11:39:11

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

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

"what is someval2 equal to in call 3? nullable or bar?" It will be null.

Well, actually, you can't do call 3 ... it will not compile because you can't pass an object as a string parameter. However, if you had dim obj as string = null, then it would be null.

_蜘蛛 2024-10-01 11:39:11

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

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

If no parameter value is supplied to an optional parameter, the default value for that parameter will be used.

If Nothing is passed to an optional parameter, the parameter value will be Nothing and the default value will be ignored.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文