4

我有一个通过引用接受字符串的函数:

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

4

2 回答 2

6

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

从方法的角度来看,它们是相同的。

于 2011-06-06T18:53:51.283 回答
0

您可以添加一个空引用检查:

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
于 2011-06-06T19:14:20.160 回答