C# und VB.Net gemeinsam nutzen

Arrays

Aus Bequemlichkeit speichern VB-Programmierer Variablen gleichen Typs gerne in Arrays, da sich diese bei Bedarf leicht per ReDim Preserve vergrößern lassen. Zudem ist das Handling von Arrays sehr einfach.

Dim arrStrings() as String
Dim i as Integer

For i = 1 To 5000
ReDim Preserve arrStrings(i)
arrStrings(i-1) = i
Next

Intern werden die Inhalte jedoch in ein neu erzeugtes Array kopiert, was auch schon bei wenigen Dutzend Datensätzen zum Performancekiller mutieren kann. Dies wirkt sich insbesondere auf IIS-Webservern mit .Net negativ aus, denn hier werden solche Routinen nicht nur wenige Male sondern unter Umständen mehrere hundert Mal pro Minute aufgerufen.

In C# existiert von vornherein kein ReDim bei Arrays – die Größe wird einmal definiert und bleibt dann so. Zwar lassen sich die Inhalte in andere Arrays kopieren, das ist aber beispielsweise beim dynamischen Vergrößern in Schleifen unpraktikabel. Deshalb verwenden C#-Programmierer von vornherein lieber Collections, Hashtables oder seit der Version 2.0 die so genannten Generics. Um ein ReDim unter C# nachzubilden, müsste man folgenden Code anwenden. Dieser verdeutlicht auch, wie das VB-Konstrukt intern umgesetzt wird.

string[] arrStrings = new string[1];
int i;

for (i=1;i<=5000;i++) {
string[] arrHelper = new string[i];
arrStrings.CopyTo(arrHelper, 0);
arrHelper[i-1] = i.ToString();
arrStrings = arrHelper;
}