Лучший способ написать это: растущий массив

StackOverflow https://stackoverflow.com/questions/619653

  •  03-07-2019
  •  | 
  •  

Вопрос

Ранее рассматривал какой-то код и думаю, что должен быть более элегантный способ написания этого ....

(returnVar.Warnings - строковый массив, его можно вернуть в любом размере в зависимости от количества зарегистрированных предупреждений)

For Each item In items
  If o.ImageContent.ImageId = 0 Then
    ReDim Preserve returnVar.Warnings(returnVar.Warnings.GetUpperBound(0) + 1)
    returnVar.Warnings(returnVar.Warnings.GetUpperBound(0)) = "Section: " & section.<header>.<title>.ToString & " , Item: " & item.<title>.ToString
  End If
Next
Это было полезно?

Решение

используйте универсальный список (из строки) затем получите массив, содержащий данные списка, если вам это нужно

dim list = new List(of string)
list.Add("foo")
list.Add("bar")
list.ToArray()

Другие советы

Разве вы не можете использовать ArrayList, который делает это для вас?

http://msdn.microsoft.com/en -us / библиотека / system.collections.arraylist.aspx

Начните с перемещения оператора If из цикла.

Если вы используете framework 3.5, вы можете использовать LINQ для зацикливания элементов.

If o.ImageContent.ImageId = 0 Then
    returnVar.Warnings = items.Select(Function(item) "Section: " & section.<header>.<title>.ToString & " , Item: " & item.<title>.ToString).ToArray()
Else
    returnVar.Warnings = New String() {}
End If
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top