Я знаю, что в Visual Basic функция делегата не может содержит необязательные параметры. Но может ли метод принять делегат как необязательный параметр?Можете ли вы передать функцию делегата в качестве необязательного параметра?
То, что я хочу сделать это:
Delegate Sub MyDelegate(ByVal input As String)
Sub MyDelegateDefault(ByVal input As String)
'by default do nothing'
End Sub
Sub MyDelegateCustom1(ByVal input As String)
'do something here'
End Sub
В другой части кода:
Sub OtherFunction(ByVal str As String, Optional ByVal delegate As MyDelegate = AddressOf MyDelegateDefault)
delegate(str)
End Sub
Sub ParentFunction()
OtherFunction("",) '< "" as string, nothing for optional delegate parameter'
End Sub
Обратите внимание, как последняя функция OtherFunction
занимает дополнительный делегат в качестве второго параметра.
Это вещь? Может ли функция делегата быть необязательным параметром?
Я парень C#, но мне кажется вполне разумным. Вы попробовали? Это сработало? –
На второй мысли нет, я бы держал пари, что это не сработает, потому что это, вероятно, ссылочный тип. Вам нужно будет использовать «MyDelagate = null» и проверить значение null, а не называть его, если null. –
Вы правы! Установка его на ключевое слово VB Ничего не работает должным образом. Добавьте его в качестве ответа, и я верну его правильному! – Django