Daten im Nachhinein in einem Array speichern (C#)?

1 Antwort

Bei einem Array hast du das Problem, dass es beim Anlegen eine fixe Größe verlangt, die sich daraufhin nicht mehr ändern darf. Das heißt, wenn du dieses Array anlegst:

string[] names = new string[0];

ist dieses zwar leer, du kannst ihm aber auch keine Elemente zuweisen. Du müsstest die Variable stattdessen auf ein neues Array-Objekt zeigen lassen, um mehr Speicherplatz zu erlangen.

names = new string[1];

Angenommen, du hättest ein Array mit Elementen und wolltest es vergrößern, müsstest du zusätzlich Sorge dafür tragen, dass die bestehenden Daten in das neue Array mit übertragen werden. Das könnte man bspw. mit einer Schleife erledigen.

string[] names = new string[2];
names[0] = "Albert";
names[1] = "Jessica";

string[] temp = new string[3];

for (int index = 0; index < names.Length; ++index)
{
  temp[index] = names[index];
}

names = temp;

Wenn man damit rechnet, dass das Array in kurzer Zeit neue Elemente immer wieder dazubekommen soll, könnte man die initiale Größe sowie die Zahl neuer Felder bei Vergrößerung heben. Zum Beispiel auf 10.

Der dynamischere / flexiblere Ansatz wäre wiederum eine tatsächliche Liste, die neue Einträge einfach hinten ankettet.

// create
IList<string> names = new List<string>();

// append
names.Add("Albert");
names.Add("Jessica");

// read
string firstName = names[0]; // Albert