2009-03-06 9 views
0

wurde auf einige Code früher suchen, und ich denke, dass es eine elegantere Möglichkeit, dies zu schreiben ....Eine bessere Möglichkeit, diese zu schreiben: wachsende Array

(returnVar.Warnings ist ein String-Array sein muss könnte es als jeder Größe in Abhängigkeit von der Anzahl der Warnungen zurückgegeben werden, die)

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 

Antwort

7

die generic List(of string) verwenden angemeldet sind dann ein Array erhalten die Listendaten enthalten, wenn Sie es brauchen

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

Hinweis: Die ToArray-Methode gibt das zugrunde liegende Array nicht zurück, sondern erstellt ein neues Array und kopiert die Werte dorthin. – Guffa

+0

guter Punkt, Post aktualisiert – Jason

0

zunächst die If Anweisung aus der Schleife zu bewegen.

Wenn Sie Framework 3.5 verwenden, können Sie LINQ zum Schleifen der Elemente verwenden.

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 
Verwandte Themen