Обновление : Если вам нужна функция, которая может принимать или String
или String()
массив, вы можете сделать это с помощьюключевое слово ParamArray
.Но это должен быть последний аргумент, передаваемый в функцию;так что вам просто нужно изменить порядок аргументов:
Private Function AddMonth(ByVal month As String, ByVal ParamArray list() As String) As List(Of String)
' Same code as below
End Function
Это позволит вам назвать это так:
Dim withMonths = AddMonth("March", "Report")
А также вот так:
Dim withMonths = AddMonth("March", "Report", "Memo")
А также вот так:
Dim list = New String() { "Report", "Memo" }
Dim withMonths = AddMonth("March", list)
Обратите внимание, что хотя это, кажется, позволяет достичь того, что вам нужно, на самом деле оно немного меньше гибкое, так как требуетпередать параметры либо в форме выше (каждый в отдельности), либо в виде фактического String()
массива, а не просто любого IEnumerable(Of String)
, такого как List(Of String)
.
Оригинальный ответ :
Private Function AddMonth(Of T)(ByVal list As IEnumerable(Of T), ByVal month As String) As List(Of String)
Dim names As New List(Of String)
For Each name In list
' Using String.Concat avoids the possibility
' of a NullReferenceException
names.Add(String.Concat(name) + " (" + month + ")")
Next name
Return names
End Function