C# Array Tutorial

Was Arrays sind und wofür sie benutzt werden

Bis jetzt haben wir nur mit einzelnen Variablen gearbeitet aber gerade wenn man mehrere Variablen vom gleichen Datentyp benutzt kann es hilfreich sein eine Art Liste dieses Datentypen anzulegen, das ginge zum Beispiel in Form von einem C# Array.

Nehmen wir als Beispiel eine Schulklasse mit sieben Kindern. Wir könnten jetzt für jedes der Kinder eine string Variable anlegen die den Namen des Kindes wiedergibt. Dann hätten wir insgesamt sieben Variablen, es gibt aber eine wesentlich elegantere Lösung. Jetzt legen wir einen Array vom Datentyp string an und weisen ihm sieben Werte zu. Diesen Array können wir dann einfach mit einem Index abfragen:

static void Main(string[] args)
{
  string[] students = new string[] { "Peter", "Karl" , "Heinrich", "Gustav", "Lisa", "Mareike", "Sophie"};
}

Schauen wir uns das Beispiel einmal genauer an. Mit den eckigen Klammern [] legen wir fest, dass sich die Variable als Array verhalten soll, mit string[] students haben wir also einen Array vom Datentyp string deklariert. Mit dem new Operator erstellen wir ein neues Objekt, das soll ein string Array sein. Immer daran denken, C# ist eine objektorientierte Sprache. Wir müssen erst ein Array Objekt erzeugen. Hinter den zweiten eckigen Klammern sehen wir dann die sieben Einträge in den geschweiften Klammern.

Stell dir den Array jetzt wie eine Liste vor, der Inhalte würde so aussehen:

  • auf Platz 0 → Peter
  • auf Platz 1 → Karl
  • auf Platz 2 → Heinrich
  • auf Platz 3 → Gustav
  • auf Platz 4 → Lisa
  • auf Platz 5 → Mareike
  • auf Platz 6 → Sophie

Ist dir etwas aufgefallen? Wir fangen bei 0 an zu zählen anstatt bei eins. Das machen Computer nun mal so. Wenn wir also wissen möchten wer im Array an erster Stelle steht, dann müssen wir das Element im Array mit dem Index 0 abfragen. Beachte auch, dass der letzte Platz dann natürlich nicht auf 7 ist sondern auf Index 6.

Ein Element im Array abfragen

Wenn du jetzt ein Element aus dem Array oben abfragen möchtest, dann benötigst du einen Index. Der Index gibt einfach nur an, an von welchem Element im Array du den Wert bekommen möchtest (1. Element im Array → Index 0).

static void Main(string[] args)
{
  string[] students = new string[]{"Peter", "Karl" , "Heinrich", "Gustav", "Lisa", "Mareike", "Sophie"};

  string studentName = students[2]; // <- Index ist 2
  Console.WriteLine(students); // Ergebnis ist Heinrich (3. Element im Array)

  Console.ReadKey();
}

Mit den eckigen Klammern im Beispiel fragen wir mit dem Index 2 das 3. Element (0,1,2) im Array ab, als Ergebnis bekommen wir "Heinrich". Was korrekt ist.

Ein Element im Array verändern (neuen Wert zuweisen)

Wir können auch den Wert von einem Element im Array verändern. Dafür nutzen wir auch hier wieder die eckigen Klammern. Das tut man einfach immer wenn man ein Element im Array verändern oder abfragen möchte.

static void Main(string[] args)
{
  string[] students = new string[]{"Peter", "Karl" , "Heinrich", "Gustav", "Lisa", "Mareike", "Sophie"};

  students[0] = "Rüdiger";
  Console.WriteLine(students[0]); // Ergebnis ist Rüdiger

  Console.ReadKey();
}

Der Wert von dem ersten Element im Array ist nicht länger "Peter", denn er wurde durch "Rüdiger" ersetzt.

Wichtiger Hinweis: Ein Array kann nicht vergrößert oder verkleinert werden nachdem er erstellt wurde. Das heißt, in den Beispielen von oben könnten wir die Länge des Arrays nicht auf vier oder zehn verändern.

Die häufige IndexOutOfRangeException

Wie du mit Sicherheit schon erkannt hast ist das mit dem Index etwas verwirrend. Was sehr häufig passiert ist, dass du beispielsweise einen Array mit 10 Werten hast, dein Array hat also eine tatsächliche Länge von 10. Du benutzt einen Index von 10 um das 10. Element im Array abzufragen und bekommst einen Error, die IndexOutOfRangeException. Das Problem ist, dass du versuchst ein Element auf einem Platz abzufragen das nicht existiert. Wenn dein Array eine länge von 10 hat, dann ist dein größter möglicher Index 9 (0,1,2,3,4,5,6,7,8,9), vergiss niemals dass das erste Element im Array immer auf dem 0. Index sitzt.

Einen Array ohne vordefinierte Werte

Ich habe ja schon erwähnt, dass die Länge eines Arrays nach seiner Erstellung nicht verändert werden kann. Nehmen wir jetzt mal an wir wissen dass die Schulklasse aus 5 Kindern besteht, deren Namen kennen wir aber nicht. Dann können wir den Array nicht mit 5 zugewiesenen Werten deklarieren. In diesem Fall erstellen wir einfach einen Array mit einer Länge von 5 aber ohne zugewiesene Werte. Die Werte für die Elemente können wir im nachhinein hinzufügen:

static void Main(string[] args)
{
  string[] students = new string[5];

  students[0] = "Peter";
  students[1] = "Karl";
  students[2] = "Heinrich";
  students[3] = "Gustav";
  students[4] = "Lisa";

  Console.ReadKey();
}

Wir haben also einen "leeren" Array mit 5 "leeren" Plätzen erstellt und die Plätze im nachhinein gefüllt. Beachte das wir bei der Erstellung des Arrays die Länge des Arrays in die eckigen Klammern geschrieben haben.

Ein C# Array ist ein wichtiges Element beim programmieren und du solltest auf jeden Fall verstehen wie ein Array funktioniert und wofür er genutzt wird. Wenn du mehr über Arrays erfahren willst, dann schau doch mal hier vorbei.