Лучший способ написать это: растущий массив - PullRequest
0 голосов
/ 06 марта 2009

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

(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

Ответы [ 3 ]

7 голосов
/ 06 марта 2009

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

dim list = new List(of string)
list.Add("foo")
list.Add("bar")
list.ToArray()
0 голосов
/ 06 марта 2009

Начните с перемещения оператора 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
0 голосов
/ 06 марта 2009

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

http://msdn.microsoft.com/en-us/library/system.collections.arraylist.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...