Arrays (Felder) in C#
Lernen Sie Arrays in C#, inklusive Deklaration, Indexzugriff, Schleifen und typischer Array-Operationen mit Beispielen.
In C# werden Arrays verwendet, um mehrere Werte desselben Typs hintereinander im Speicher zu speichern.
Dank der Indizierung kann schnell auf die Elemente zugegriffen werden.
Dieser Artikel bietet eine detaillierte Einführung – von der Deklaration von Arrays über mehrdimensionale Arrays
bis hin zu praktischen Beispielen mit Methoden der Array-Klasse.
Was ist ein Array?
Ein Array ist eine Struktur, in der Daten desselben Typs in aufeinanderfolgenden Speicherzellen gespeichert werden. Auf jedes Element wird über eine Indexnummer zugegriffen. Indizes beginnen bei 0.
int[] zahlen = new int[5]; // ein int-Array mit 5 Elementen
Deklaration und Standardwerte
Bei der Deklaration eines Arrays wird seine Größe angegeben. Werden keine Werte zugewiesen, gelten Standardwerte:
int→ 0bool→ falsestring→ null
string[] namen = new string[3];
Console.WriteLine(namen[0]); // null
Zuweisung und Zugriff (Indizierung)
Auf Elemente wird über den Index zugegriffen. Da Indizes bei 0 beginnen, befindet sich das letzte Element an Length - 1.
int[] noten = new int[5];
noten[0] = 85;
noten[1] = 90;
noten[2] = 70;
noten[3] = 75;
noten[4] = 60;
Console.WriteLine(noten[1]); // 90
Console.WriteLine(noten[^1]); // 60, Gibt das letzte Element zurück (Length - 1)
int[] teilNoten = noten[1..4]; // Ein Teil-Array: 90, 70, 75
noten[5] = 100; // Diese Zeile wirft eine IndexOutOfRangeException
Der Zugriff auf Indizes außerhalb der Array-Größe führt zu einer IndexOutOfRangeException.
Beispiel: Bei array[4] sind die gültigen Indizes 0, 1, 2, 3.
Werte wie -1, 4 oder 5 verursachen einen Fehler. Auf das erste Element wird immer mit Index 0 zugegriffen.
Abkürzungen für Array-Initialisierung
Sie können Werte direkt beim Erstellen eines Arrays angeben.
int[] zahlen = { 10, 20, 30 };
var buchstaben = new char[] { 'A', 'B', 'C' };
Iteration über Arrays mit Schleifen
Zum Zugriff auf Array-Elemente werden for- und foreach-Schleifen verwendet.
int[] zahlen = { 3, 6, 9 };
// mit for
for (int i = 0; i < zahlen.Length; i++)
Console.WriteLine(zahlen[i]);
// mit foreach
foreach (var z in zahlen)
Console.WriteLine(z);
Mehrdimensionale Arrays (2D, 3D)
Mehrdimensionale Arrays werden verwendet, um Daten in Tabellen- oder Matrixform zu speichern. Elemente können über Indizes angesprochen oder mit verschachtelten Schleifen durchlaufen werden.
int[,] matrix = new int[2, 3]
{
{1, 2, 3},
{4, 5, 6}
};
Console.WriteLine(matrix[1, 2]); // 6
// Mit verschachtelten for-Schleifen
for (int i = 0; i < matrix.GetLength(0); i++) // Zeilen
{
for (int j = 0; j < matrix.GetLength(1); j++) // Spalten
{
Console.Write(matrix[i, j] + " ");
}
Console.WriteLine();
}
// Ausgabe:
6
1 2 3
4 5 6
Gezackte Arrays (Jagged Arrays)
In gezackten Arrays kann jede Zeile eine unterschiedliche Länge haben. Dies unterscheidet sich von Matrizen.
int[][] jagged = new int[3][];
jagged[0] = new int[] {1, 2};
jagged[1] = new int[] {3, 4, 5};
jagged[2] = new int[] {6};
Console.WriteLine(jagged[1][2]); // 5
Die Array-Klasse und nützliche Methoden
In C# leiten alle Arrays von der Array-Klasse ab. Häufig verwendete Methoden sind:
int[] zahlen = { 5, 2, 9, 1, 7 };
Array.Sort(zahlen); // Sortieren
Array.Reverse(zahlen); // Umkehren
int index = Array.IndexOf(zahlen, 9); // Element suchen
Console.WriteLine(index);
Beispiel: Schülernoten
Im folgenden Beispiel werden die Noten der Schüler in einem Array gespeichert und der Durchschnitt berechnet.
int[] noten = { 80, 70, 95, 60, 100 };
int summe = 0;
foreach (var n in noten)
summe += n;
double durchschnitt = (double)summe / noten.Length;
Console.WriteLine($"Durchschnitt: {durchschnitt}");
TL;DR
- Arrays speichern Werte desselben Typs hintereinander im Speicher.
- Indizes beginnen bei 0; Standardwerte sind die Standardwerte des Typs.
- Mit
forundforeachkönnen Arrays durchlaufen werden. - Mehrdimensionale und gezackte Arrays werden unterstützt.
- Die
Array-Klasse bietet nützliche Methoden.
Beispiel: Teilnehmerpunkte
In diesem Beispiel gibt der Benutzer die Anzahl der Teilnehmer und deren Punkte ein.
Danach werden Gesamt- und Durchschnittspunkte berechnet.
Mit int.TryParse wird geprüft, ob gültige Ganzzahlen eingegeben wurden.
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] punkte = null;
int anzahl = 0;
Console.Write("Anzahl der Teilnehmer: ");
// Eingabe von der Konsole als string, Umwandlung in int
if (!int.TryParse(Console.ReadLine(), out anzahl))
{
// Falls Umwandlung fehlschlägt, Programm mit Hinweis beenden
Console.WriteLine("\n\nEs wurde kein gültiger Ganzzahlwert eingegeben.");
return;
}
else if (anzahl > 10 || anzahl < 3)
{
// Falls Zahl gültig, aber kleiner als 3 oder größer als 10 → ungültig
Console.WriteLine("\n\nUngültige Teilnehmeranzahl eingegeben.");
return;
}
// Gültige Zahl → Array mit entsprechender Größe anlegen
punkte = new int[anzahl];
int i = 0;
// Schleife beginnt
while (i < punkte.Length)
{
// Punkte für jeden Teilnehmer
Console.Write($"{i + 1}. Teilnehmer: ");
if (!int.TryParse(Console.ReadLine(), out punkte[i]))
{
// Ungültige Eingabe → Schleife mit Hinweis beenden
Console.WriteLine("\n\nEs wurde kein gültiger Ganzzahlwert eingegeben.");
break;
}
i++;
}
// Am Ende Summe und Durchschnitt ausgeben
Console.WriteLine($"Gesamtpunkte: {punkte.Sum()}");
Console.WriteLine($"Durchschnitt: {punkte.Average()}");
}
}
Ähnliche Artikel
C# Schleifen (for, foreach, while, do-while)
Lernen Sie die Verwendung von for-, foreach-, while- und do-while-Schleifen in C#, um wiederholte Abläufe effizient umzusetzen.
Generische Strukturen in C# (List<T>, Dictionary<TKey,TValue>)
Lernen Sie Generics in C# (List<T>, Dictionary<TKey,TValue>), um typsicheren, wiederverwendbaren Code zu schreiben.
Grundlegende Datentypen in C#
Grundlegende Datentypen in C#: numerisch, textbasiert, logisch, objektorientiert und nullable.
Kollektionen in C#: Liste, Wörterbuch, Warteschlange, Stapel
Lernen Sie Collections in C# wie List, Dictionary, Queue und Stack kennen, um Daten effizient zu verwalten – mit Beispielen.