Когда в C# у нас есть параметры параметров out
и ref
, в VB есть только один: ByRef
.
Теперь небольшая «проблема» при попытке «устранить» предупреждение компилятора о том, что тест не был инициализирован перед передачей в качестве аргумента:
Dim test As MyParsableClass ' = Nothing need imperatively?? '
' some code ... '
MyParsableClass.TryParse("value", test) ' warning on "test" here
краткое объявление класса:
Class MyParsableClass
Public Shared Function TryParse(ByVal value As String, _
ByRef myParsableClass As MyParsableClass) As Boolean
myParsableClass = Nothing
If True Then
' parse code OK'
myParsableClass = New MyParsableClass()
Return True
Else
' parse code NOK '
' myParsableClass remains Nothing '
Return False
End If
End Function
End Class
возможно, решение состояло в том, чтобы объявить
...Optional ByRef myParsableClass As MyParsableClass = Nothing)
но я не могу установить этот параметр как необязательный. Что будет, если я пропущу это?
PS (изменить)
В реальном проекте мой "анализируемый" класс - это MyHour
со свойствами Hour
и Minute
. Я уже написал Parse(value as String)
с FormatException, но я думаю, что код мог бы быть более понятным, компактным и быстрым, когда я не буду использовать блоки try catch...
#pragma
и прочих подобных уловок)? - person serhio   schedule 18.01.2010Nothing
? - person Dirk Vollmar   schedule 18.01.2010= Nothing
к объявлению переменной кажется не слишком трудоемким по сравнению со слишком сложным статическим анализатором в компиляторе (который может увеличить время компиляции для каждого процесса сборки). Ведь это предупреждение, а не ошибка компилятора. - person Dirk Vollmar   schedule 18.01.2010