Как использовать параметр функции в качестве значения по умолчанию ее необязательного параметра в VB.net - PullRequest
0 голосов
/ 30 августа 2018

Как использовать значение из параметра функции в качестве значения по умолчанию для необязательного параметра в VB.net?

Это не работает для меня:

Public Function func(ByVal param1 As String, ByVal param2 As String, ByVal Optional param3 As String = param1) As String
   Return ""
End Function

1 Ответ

0 голосов
/ 30 августа 2018

См. документацию для параметров Optional, почему это не сработает:

  • Каждый необязательный параметр в определении процедуры должен указывать значение по умолчанию.

  • Значением по умолчанию для необязательного параметра должно быть константное выражение .

  • Каждый параметр, следующий за необязательным параметром в определении процедуры, также должен быть необязательным.

Следовательно, вам нужно что-то вроде этого, чтобы работать так, как вы задумывали:

Function func(ByVal param1 As String, ByVal param2 As String, ByVal Optional param3 As String = "") As String
    If(String.IsNullOrEmpty(param3) Then
        param3 = param1
    End If

    Return ""
End Function

Однако вы можете решить эту проблему с помощью перегрузки вместо Optional:

Function func(ByVal param1 As String, ByVal param2 As String) As String
    Return func(param1, param2, param1)
End Function

Function func(ByVal param1 As String, ByVal param2 As String, ByVal param3 as String) As String
    Return ""
End Function    

Вероятно, не самая ясная реализация, поэтому, если вы сделаете это, убедитесь, что добавили XML-комментарии к методу, чтобы его было легко понять.

...