4

参照によって文字列を受け入れる関数があります。

Function Foo(ByRef input As String)

私はこのようにそれを呼び出す場合:

Foo(Nothing)

次のように呼び出す場合とは異なることをしたい:

Dim myString As String = Nothing
Foo(myString)

この違いは、VB .NET でメソッドを呼び出す方法で検出できますか?

編集

なぜこれをやりたいのかを明確にするために、2つの方法があります。

Function Foo()
  Foo(Nothing)
End Function

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

すべてのロジックは 2 番目のオーバーロードにありますが、関数を含むNothing変数が渡された場合とは異なるロジックの分岐を実行したいと考えています。 Nothing

4

2 に答える 2

6

どちらの場合も、メソッドは、input何も指していない文字列 ( ) への参照を「認識」します。

メソッドの観点からは、これらは同一です。

于 2011-06-06T18:53:51.283 に答える
0

次のいずれかの Null Reference チェックを追加できます。

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 に答える