Array
Ein Array eine Datentyp-Variante, mit der es möglich ist, eine Liste von Werten in einer Variablen zu speichern.
Beim Programmieren genügt es häufig nicht, nur einen einzigen Wert in einer Variablen zu halten. Beim Durchsuchen von Datenmengen wird das Ergebnis zum Beispiel in Form einer Liste organisiert, die dann wiederum untersucht und durchlaufen werden kann. Arrays stellen dabei eine einfache, aber technisch effiziente Form einer Werte-Liste dar.
Codebeispiel
string[] elemente = new string[5]{"Feuer","Wasser","Erde","Luft","Metall"}; //Variable vom Typ String-Array, mit fünf vordefinierten Elementen
erzeugt im Speicher folgende Liste:
Jeder Eintrag besteht aus Positionsnummer (Index) und dem Inhalt (Text).
Typische Eigenschaften eines Arrays
Die genauen Beschaffenheiten eines Arrays hängen von der Programmiersprache ab. Bei den meisten Hochsprachen wie z.B. C# gilt:
- Jedes Element des Arrays den selben Datentyp. Es ist z.B. nicht möglich, ein Array anzulegen, das sowohl Zahlen als auch Texte beinhaltet. Es kann nur den einen oder anderen Typ umfassen.
- Array-Variablen erkennt man daran, dass eckige Klammern auf den Datentyp folgen,
z.B.:string[] elemente
definiert eine Liste von Texten (Strings). - Auf die Einträge einer solchen Liste (Array) wird ebenfalls mit eckigen Klammern zugegriffen, wobei die Klammern einen Index enthalten. Der Index beginnt meist mit Null, nicht mit Eins.
Der Codeelemente[0]="Holz"
speichert den Text „Holz“ an die erste Stelle der Liste elemente. („Feuer“ wird durch „Holz“ ersetzt.) - Ein Array hat eine bestimmte Länge, die die Anzahl der im Array verfügbaren Speicherplätze angibt.
Der Codestring
[] elemente = new string[5];
definiert ein Array namens zahlenfolge mit der Länge 5. In diesem Array lassen sich also 5 Zahlen speichern. Weil der Index mit0
beginnt, ist der Index des letzten Elements folglich Länge-1, also hier4
.
Dynamische Listen
In einigen Programmiersprache sind Arrays statisch, d.h. die Länge kann nicht nachträglich verändert werden. In einem solchen Fall gibt es meistens Helfer-Klassen (meist „List“ oder ähnlich), die eine Form dynamischer Arrays ermöglichen.
Assoziative Arrays
Normalerweise sind die Indizes von Arrays ganze Zahlen, also vom Typ Integer
. Eine Sonderform stellen Assoziative Arrays dar: Dabei kann ein separater Typ für den Index definiert werden, wodurch eine Verbindung (Assoziation) zwischen zwei theoretisch beliebigen Werten möglich wird. Solche assoziativen Arrays werden in C# als sogenanntes Dictionary realisiert. Der Gewinn dieser Technik liegt meistens in der vereinfachten Suche von Elementen, da der Index auch eine inhaltliche Information tragen kann:
Beispiel mit Array
/// Beispiel mit klassischem Array. /// Aufgabe: In einer Liste ist das Alter von Elsa (21) und das Alter von Anna (18) hinterlegt. Der Code soll nun das Alter von Elsa finden und ausgeben. private class Person //Helferklasse, um zwei Einträge (Name und Alter) zusammen speichern zu können. { public string name=""; public int alter=0; public Person(string neuerName,int neuesAlter) { name=neuerName; alter=neuesAlter; } } private static void testMitArray() { Person[] personenDaten = new Person[2]; //Liste zur Speicherung von 2 Personen personenDaten[0]=new Person("Elsa",21); //Datensatz für Elsa hinzufügen personenDaten[1]=new Person("Anna",18); //Datensatz für Anna hinzufügen for(int i=0; i<personenDaten.Length; i++) //Wir müssen durch alle Elemente im Array laufen und bei jedem prüfen, ob es das gesuchte ist. { if(personenDaten[i].name=="Elsa") //Das ist der gesuchte Eintrag { Console.WriteLine("Elsa ist "+personenDaten[i].alter+" Jahre alt."); break; //gefunden, wir können die for-Schleife verlassen } } }
Beispiel mit Dictionary
/// Beispiel mit assoziativem Array (Dictionary) /// Aufgabe: In einer Liste ist das Alter von Elsa (21) und das Alter von Anna (18) hinterlegt. Der Code soll nun das Alter von Elsa finden und ausgeben. using System.Collections.Generic; //Erforderlich, um den Dictionary-Typ nutzen zu können private static void testMitDictionary() { Dictionary<string, int> personenDaten = new Dictionary<string,int>(); //Assoziatives Array (beliebiger Länge) mit Index vom Typ string und Werten vom Typ int. personenDaten["Elsa"]=21; //Zahl 21 unter dem Index Elsa speichern personenDaten["Anna"]=18; //Zahl 18 unter dem Index Anna speichern Console.WriteLine("Elsa ist "+personenDaten["Elsa"]+" Jahre alt."); //Wir können die Zahl direkt über den Text-Index ermitteln }
Schon alleine die Länge der beiden Code-Fragmente zeigt, was assoziative Arrays nutzen können.
Tipp: Probiere den Code online bei dotNetFiddle ausZusammenfassung
Arrays sind Datentypen, die mehrere Werte in einer Variable speichern können. Alle Werte eines Arrays müssen vom selben Typ sein, die Länge des Arrays ist meist fest definiert und unveränderlich. Der Zugriff auf die einzelnen Werte erfolgt über einen Zahlen-Index in eckigen Klammern, wobei der erste Eintrag den Index 0
hat. Flexiblere Listenformen sind über Helferklassen wie List
und Dictionary
möglich.