传递ByRef时VB检查Null Reference

时间:2011-06-06 18:52:12

标签: vb.net null pass-by-reference nothing

我有一个通过引用接受String的函数:

Function Foo(ByRef input As String)

如果我这样称呼它:

Foo(Nothing)

我希望它能做一些与我这样称呼它不同的事情:

Dim myString As String = Nothing
Foo(myString)

是否有可能在VB .NET中调用方法的方式中检测到这种差异?

修改

为了澄清为什么我想要这样做,我有两种方法:

Function Foo()
  Foo(Nothing)
End Function

Function Foo(ByRef input As String)
  'wicked awesome logic here,  hopefully
End Function

所有逻辑都在第二次重载中,但如果Nothing传递给函数,我想执行不同的逻辑分支,而不是包含 Nothing的变量被传入。

2 个答案:

答案 0 :(得分:6)

没有。在任何一种情况下,该方法都“看到”对指向任何内容的字符串(input)的引用。

从方法的角度来看,这些是相同的。

答案 1 :(得分:0)

您可以添加Null参考检查:

1)在调用函数之前

If myString IsNot Nothing Then 
     Foo(myString)
End If

2)或在函数内部

Function Foo(ByRef input As String)
    If input Is Nothing Then
        Rem Input is null
    Else
        Rem body of function
    End If
End Function