Arrays

Arrays

Description: In dieser Lektion lernt ihr, wie man Arrays deklariert und verwendet. Es werden auch einige leistungsstarke Methoden und Features gezeigt.

Duration: PT17M49S

ContentUrl: https://progressivemlx-a.akamaihd.net:443/asset-0d1f19e8-46bc-4fcf-82fc-b6a5c31fe284/20616-277731-j2ev0myg.zqb_H264_650kbps_AAC_und_ch2_96kbps.mp4?sv=2012-02-12&sr=c&si=1ec83f75-3c77-4126-8137-4ae97e1256f0&sig=3%2F7G7Qq1aJr78DJmlq70UciVXiWqYCnXvp4%2FxF9GFD4%3D&st=2016-03-23T02%3A32%3A44Z&se=2018-12-18T02%3A32%3A44Z

EmbedUrl: https://mva.microsoft.com/en-US/training-courses-embed/c-fundamentals-for-absolute-beginners-16169/Video-Understanding-Arrays-CIsZZWQIC_8306218949

UploadDate: 2016-03-25T12:40:00+02:00

Thumbnail

Inhaltszusammenfassung

Hierbei geht es um Sammlungen von Datenwerten in einer Variable. Ein Array kann mehrere Datenwerte von einem Datentyp speichern, was viele Zeilen an Code erspart, da man sonst für jeden Wert eine eigene Variable angelegt hätte. Die Verwendung von Arrays werden hier kurz anhand eines praktischen Beispiels erklärt.


Durchführung

Gehen wir von folgendem Beispiel aus: Aus einer Reihe von Ganzzahlen suchen wir die Variable mit dem Wert 16. Würde man kein Array verwenden, hätte man viele Variablen. Da es sich um eine Vielzahl von Variablen handelt, kann man keine Schleife einsetzen. Bei dem folgenden Ausgangscode würde das Ergebnis zum Beispiel sein:   Die VIERTE Nummer hat den Wert 16.

class Program
{
static void Main(string[] args)
{
int number1 = 4;
int number2 = 8;
int number3 = 15;
int number4 = 16;
int number5 = 23;

if (number1 == 16)
{
}
else if (number2 == 16)
{
}
else if (number3 == 16)
{
}
}
}

Die Struktur eines Arrays ist:    <Datentyp>[] <Variablenname> = new <Datentyp>[<Anzahl der Werte>];
Die eckigen Klammern nach dem Datentyp bedeuten, dass es sich um ein Array handelt. Der Zugriff auf die Werte im Array erfolgt mittels eckigen Klammern:  <Variablenname>[<Index>]  Der Index startet bei null. Das bedeutet das ein Array von der Länge 2 den Index 0 und 1 besitzt. Sehen wir uns in einem praktischen Beispiel an, wie man Werte in einem Array speichert:

int[] numbers = new int[5];

numbers[0] = 4;
numbers[1] = 8;
numbers[2] = 15;
numbers[3] = 16;
numbers[4] = 23;

Console.WriteLine(numbers[1]);
Console.WriteLine(numbers.Length);
Console.ReadLine();

Wie man sehen kann ist die Wertzuweisung immer noch gleichlang wie vorher. Aber man kann nun das Array, in zum Beispiel einer For-Schleife durchgehen mit dem Index. Die Wertzuweisung in einem Array kann man auch noch kürzer schreiben. Die Initialisierung sieht sehr ähnlich aus, nur dass anstatt der Länge des Arrays, nach den Klammern die Werte stehen. Sehen wir uns das in einem Beispiel an:

int[] numbers = new int[] { 4, 8, 15, 16, 23, 42 };

string[] names = new string[] { "Eddie", "Alex", "Michael", "David Lee" };

Im oben angezeigten Code wird die Länge des Arrays durch die Anzahl der Werte in den geschwungenen Klammern bestimmt. Dies funktioniert nicht nur bei Ganzzahlen, sondern bei allen Datentypen. Man könnte auch ein Array von einem Array machen, falls man es bräuchte. Würde man versuchen auf einen Wert zuzugreifen, der größer als die Länge des Arrays ist, würde ein Fehler ausgeworfen werden. Wie vorher schon angesprochen, kann man die Werte, da sie sich in einem Array befinden, mit einer Schleife durchlaufen und somit das gesamte Array ausgeben. Mit einer For-Schleife zum Beispiel würde die Variable "i" der Index für den Zugriff auf das Array sein. Diese Zählervariable darf nicht größer als die Länge des Arrays sein.

for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}

// Alternative zur For-Schleife
foreach (string name in names)
{
Console.WriteLine(name);
}

Console.ReadLine();

Das Arrayobjekt bietet mehrere nützliche Methoden wie zum Beispiel das Umkehren eines Arrays (Reverse) oder das Sortieren von einem Array (Sort). Will man zum Beispiel eine Zeichenkette umdrehen, sodass "Wert" zu "treW" wird, benutzt man die "Reverse"-Funktion. Das String Objekt bietet die Möglichkeit, die Zeichenkette in ein Array von Zeichen umzuwandeln mit der Methode ".ToCharArray();". So würde es anhand eines praktischen Beispiels aussehen:

string zig = "Du kannst aus deinem Leben bekommen was du willst " +
"wenn du genug anderen Menschen hilfst zu bekommen was sie wollen.";

char[] charArray = zig.ToCharArray();
Array.Reverse(charArray);

foreach (char zigChar in charArray)
{
Console.Write(zigChar);
}
Console.ReadLine();

Vollständiger Programmcode

class Program
{
static void Main(string[] args)
{
/*int number1 = 4;
int number2 = 8;
int number3 = 15;
int number4 = 16;
int number5 = 23;

if (number1 == 16)
{
}
else if (number2 == 16)
{
}
else if (number3 == 16)
{
}*/

/*int[] numbers = new int[5];

numbers[0] = 4;
numbers[1] = 8;
numbers[2] = 15;
numbers[3] = 16;
numbers[4] = 23;

Console.WriteLine(numbers[1]);
Console.WriteLine(numbers.Length);
Console.ReadLine();*/

int[] numbers = new int[] { 4, 8, 15, 16, 23, 42 };

string[] names = new string[] { "Eddie", "Alex", "Michael", "David Lee" };

for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}

foreach (string name in names)
{
Console.WriteLine(name);
}

Console.ReadLine();

string zig = "Du kannst aus deinem Leben bekommen was du willst " +
"wenn du genug anderen Menschen hilfst zu bekommen was sie wollen.";

char[] charArray = zig.ToCharArray();
Array.Reverse(charArray);

foreach (char zigChar in charArray)
{
Console.Write(zigChar);
}
Console.ReadLine();
}
}