【问题标题】:Passing null to an optional parameter with default value将 null 传递给具有默认值的可选参数
【发布时间】:2011-04-15 19:36:06
【问题描述】:

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

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 等于什么?可以为空还是 bar?

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

【问题讨论】:

    标签: vb.net parameters optional-parameters


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-23
        • 1970-01-01
        • 2021-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多