VB проверка на нулевую ссылку при прохождении ByRef - PullRequest
4 голосов
/ 06 июня 2011

У меня есть функция, которая принимает строку по ссылке:

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 ]

6 голосов
/ 06 июня 2011

Нет.В любом случае метод «видит» ссылку на строку (input), которая ни на что не указывает.

С точки зрения метода, они идентичны.

0 голосов
/ 06 июня 2011

Вы можете добавить проверку 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
...