C# Arrays: Ein Anfängerleitfaden für die Speicherung mehrerer Werte
Hallo da draußen, angehender Programmierer! Heute machen wir uns auf eine aufregende Reise in die Welt der C#-Arrays. Stellt euch Arrays wie einen magischen Behälter vor, der mehrere Elemente desselben Typs aufnehmen kann. Es ist, als hätte man eine Schachtel mit Lieblingspralinen, aber anstatt von Pralinen speichern wir Daten!
Was sind Arrays?
Bevor wir uns den Details widmen, lassen uns verstehen, was Arrays sind. Ein Array ist eine Datenstruktur, die es ermöglicht, mehrere Werte desselben Typs in einer einzigen Variablen zu speichern. Stellt euch vor, ihr seid ein Lehrer (wie ich!) und wollt die Noten von 30 Schülern speichern. Anstatt 30 separate Variablen zu erstellen, könnt ihr ein einzelnes Array verwenden, um alle diese Noten zu speichern. Praktisch, oder?
Deklaration von Arrays
Lassen wir mit den Grundlagen beginnen: Wie deklariert man ein Array? Die Syntax ist ziemlich einfach:
dataType[] arrayName;
Zum Beispiel, wenn wir ein Array von ganzen Zahlen deklarieren möchten, schreiben wir:
int[] grades;
Diese Zeile teilt C# mit, dass wir ein Array namens grades
erstellen, das ganzzahlige Werte aufnehmen wird. Aber denken wir daran, dass wir hier noch nicht angegeben haben, wie viele Noten wir speichern möchten oder welche diese Noten sind.
Initialisierung eines Arrays
Nun, da wir unser Array deklariert haben, gönnen wir ihm eine Größe. Das können wir auf verschiedene Weisen tun:
Methode 1: Spezifizierung der Größe
int[] grades = new int[5];
Dies erstellt ein Array, das 5 ganzzahlige Werte aufnehmen kann. Initially, alle Elemente werden auf den Standardwert für Ganzzahlen gesetzt, der 0 ist.
Methode 2: Initialisierung mit Werten
int[] grades = new int[] { 85, 92, 78, 95, 88 };
Hier erstellen wir das Array und füllen es sofort mit Werten. C# ist klug genug, um zu erkennen, dass wir ein Array mit 5 Elementen basierend auf den von uns bereitgestellten Werten möchten.
Zuweisen von Werten zu einem Array
Angenommen, wir haben unser Array mit Methode 1 erstellt und möchten nun einige Noten hinzufügen. Das können wir tun, indem wir auf jedes Element des Arrays über seinen Index zugreifen:
grades[0] = 85; // Erste Note
grades[1] = 92; // Zweite Note
grades[2] = 78; // Dritte Note
grades[3] = 95; // Vierte Note
grades[4] = 88; // Fünfte Note
Denken wir daran, dass Array-Indizes in C# (und den meisten Programmiersprachen) bei 0 beginnen, nicht bei 1. Daher ist das erste Element bei Index 0, das zweite bei Index 1 und so weiter.
Zugriff auf Array-Elemente
Um auf Elemente in einem Array zuzugreifen, verwenden wir die gleiche eckige Klammerschreibweise:
int firstGrade = grades[0]; // Das gibt uns 85
int thirdGrade = grades[2]; // Das gibt uns 78
Hier ist ein kleines, spaßiges Programm, das all dies zusammenbringt:
int[] grades = new int[5];
grades[0] = 85;
grades[1] = 92;
grades[2] = 78;
grades[3] = 95;
grades[4] = 88;
Console.WriteLine("Die Noten sind:");
for (int i = 0; i < grades.Length; i++)
{
Console.WriteLine($"Schüler {i + 1}: {grades[i]}");
}
Dieses Programm wirdFolgendes ausgeben:
Die Noten sind:
Schüler 1: 85
Schüler 2: 92
Schüler 3: 78
Schüler 4: 95
Schüler 5: 88
Verwenden der foreach-Schleife
C# bietet eine praktische foreach
-Schleife, die das Iterieren durch Arrays sehr einfach macht. Lassen uns unser vorheriges Beispiel mit foreach
neu schreiben:
int[] grades = new int[] { 85, 92, 78, 95, 88 };
Console.WriteLine("Die Noten sind:");
int studentNumber = 1;
foreach (int grade in grades)
{
Console.WriteLine($"Schüler {studentNumber}: {grade}");
studentNumber++;
}
Die foreach
-Schleife iteriert automatisch durch jedes Element im Array und weist es in jeder Iteration der Variablen grade
zu. Es ist eine sauberere und lesbarere Methode, um durch alle Elemente eines Arrays zu gehen.
Mehrdimensionale Arrays
Bisher haben wir mit eindimensionalen Arrays gearbeitet. Was aber, wenn wir ein Notenbuch für mehrere Fächer erstellen möchten? Hier kommen mehrdimensionale Arrays ins Spiel. Lassen wir ein 2D-Array erstellen, um Noten für 3 Schüler in 4 Fächern zu speichern:
int[,] gradeBook = new int[3, 4]
{
{ 85, 92, 78, 95 },
{ 80, 89, 93, 87 },
{ 76, 88, 91, 84 }
};
Console.WriteLine("Notenbuch:");
for (int i = 0; i < 3; i++)
{
Console.Write($"Schüler {i + 1}: ");
for (int j = 0; j < 4; j++)
{
Console.Write($"{gradeBook[i, j]} ");
}
Console.WriteLine();
}
Dies wird Folgendes ausgeben:
Notenbuch:
Schüler 1: 85 92 78 95
Schüler 2: 80 89 93 87
Schüler 3: 76 88 91 84
Array-Methoden
C# bietet mehrere nützliche Methoden für die Arbeit mit Arrays. Hier sind einige der häufigsten:
Methode | Beschreibung | Beispiel |
---|---|---|
Array.Sort() | Sortiert die Elemente im Array | Array.Sort(grades); |
Array.Reverse() | Kehrt die Reihenfolge der Elemente im Array um | Array.Reverse(grades); |
Array.Find() | Findet das erste Element, das den angegebenen Kriterien entspricht | int firstPassingGrade = Array.Find(grades, grade => grade >= 60); |
Array.FindAll() | Findet alle Elemente, die den angegebenen Kriterien entsprechen | int[] passingGrades = Array.FindAll(grades, grade => grade >= 60); |
Array.IndexOf() | Gibt den Index des ersten Vorkommens eines Wertes zurück | int index = Array.IndexOf(grades, 95); |
Hier ist ein schnelles Beispiel, das einige dieser Methoden verwendet:
int[] grades = new int[] { 85, 92, 78, 95, 88 };
Array.Sort(grades);
Console.WriteLine("Sortierte Noten:");
foreach (int grade in grades)
{
Console.Write($"{grade} ");
}
Console.WriteLine();
int highestGrade = grades[grades.Length - 1];
Console.WriteLine($"Die höchste Note ist: {highestGrade}");
int lowestGrade = grades[0];
Console.WriteLine($"Die niedrigste Note ist: {lowestGrade}");
Dieses Programm wird Folgendes ausgeben:
Sortierte Noten:
78 85 88 92 95
Die höchste Note ist: 95
Die niedrigste Note ist: 78
Und das ist es! Ihr habt gerade eine rasante Tour durch die Welt der C#-Arrays absolviert. Denkt daran, Übung macht den Meister, also experimentiert mit verschiedenen Arten von Arrays, spielt mit mehrdimensionalen Arrays und erkundet die verschiedenen Array-Methoden. Bereit zum Start? Los geht's, zukünftige Programmierer! ??
Credits: Image by storyset