代码之家  ›  专栏  ›  技术社区  ›  xdumaine

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

  •  1
  • xdumaine  · 技术社区  · 16 年前

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

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

    我知道我会打电话的 someval == someval2 == "foo" 在函数内部,调用2 someval == "foo" 和 someval2 == "bar" someval == foo 但这是什么 someval2 等于呼叫3?可以为null还是bar?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Richard Anthony Hein    16 年前

    “在呼叫3中someval2等于什么?可为null还是bar?“它将为空。

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

        2
  •  1
  •   Dave Thompson    8 年前

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

    如果 Nothing 传递给可选参数时,参数值将为 没有什么 默认值将被忽略。