我有一个通过引用接受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
的变量被传入。
答案 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