Wird geladen...

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:


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 for und foreach kö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