Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Arrays sind sortierte Auflistungen von Elementen desselben Datentyps. Auf diese wird mithilfe des Arraynamens in Verbindung mit dem Offset vom Beginn des Arrays zum gewünschten Element zugegriffen. Verglichen mit Java gibt es in C# einige wichtige Unterschiede beim Deklarieren und Verwenden von Arrays.
Eindimensionale Arrays
Ein eindimensionales Array speichert eine feste Anzahl von Elementen in linearer Weise. Es benötigt nur einen einzelnen Indexwert, um einen bestimmten Wert identifizieren zu können. In C# müssen die eckigen Klammern in der Arraydeklaration dem Datentyp folgen. Sie dürfen nicht hinter dem Variablennamen stehen, wie es in Java erlaubt ist. Ein Array vom Typ integers wird also mit der folgenden Syntax deklariert:
int[] arr1;
Die folgende Deklaration ist in C# ungültig:
//int arr2[]; //compile error
Sobald Sie ein Array deklariert haben, legen Sie dessen Größe mit dem new-Schlüsselwort fest – genauso wie in Java. Der folgende Code deklariert den Arrayverweis:
int[] arr;
arr = new int[5]; // create a 5 element integer array
Sie greifen dann mit der gleicher Syntax wie in Java auf Elemente in einem eindimensionalen Array zu. C#-Arrayindizes sind auch nullbasiert. Der folgende Code greift auf das letzte Element des vorherigen Arrays zu:
System.Console.WriteLine(arr[4]); // access the 5th element
Initialisierung
C#-Arrayelemente können bei ihrer Erstellung mit der gleichen Syntax wie in Java initialisiert werden:
int[] arr2Lines;
arr2Lines = new int[5] {1, 2, 3, 4, 5};
Anders als in Java muss die Anzahl von C#-Initialisierern genau zu der Arraygröße passen. Mit diesem Feature können Sie ein C#-Array in einer einzelnen Zeile deklarieren und initialisieren:
int[] arr1Line = {1, 2, 3, 4, 5};
Diese Syntax erstellt ein Array mit einer Größe, die der Anzahl der Initialisierer entspricht.
Initialisieren in einer Programmschleife
Die Verwendung der for-Schleife stellt eine andere Möglichkeit dar, ein Array zu initialisieren. Die folgende Schleife legt die einzelnen Elemente eines Arrays auf 0 (null) fest:
int[] TaxRates = new int[5];
for (int i=0; i<TaxRates.Length; i++)
{
TaxRates[i] = 0;
}
Verzweigte Arrays
Sowohl C# als auch Java unterstützen die Erstellung von verzweigten oder nicht rechteckigen Arrays, in denen jede Zeile eine andere Anzahl von Spalten enthält. Das folgende verzweigte Array zum Beispiel verfügt über vier Einträge in der ersten Zeile und drei in der zweiten:
int[][] jaggedArray = new int[2][];
jaggedArray[0] = new int[4];
jaggedArray[1] = new int[3];
Mehrdimensionale Arrays
Mit C# können Sie reguläre mehrdimensionale Arrays erstellen, die wie eine Matrix aus Werten desselben Typs sind. Während sowohl Java als auch C# verzweigte Arrays unterstützen, unterstützt C# auch mehrdimensionale Arrays oder Arrays von Arrays.
Mit folgender Syntax deklarieren Sie ein mehrdimensionales rechteckiges Array:
int[,] arr2D; // declare the array reference
float[,,,] arr4D; // declare the array reference
Nachdem das Array deklariert wurde, ordnen Sie ihm wie folgt Speicher zu:
arr2D = new int[5,4]; // allocate space for 5 x 4 integers
Auf Elemente des Arrays wird dann mit der folgenden Syntax zugegriffen:
arr2D[4,3] = 906;
Da Arrays nullbasiert sind, legt diese Zeile das Element in der fünften Spalte der vierten Reihe auf 906 fest.
Initialisierung
Mehrdimensionale Arrays können in einer einzelnen Anweisung durch jede der folgenden Methoden erstellt, eingerichtet und initialisiert werden:
int[,] arr4 = new int [2,3] { {1,2,3}, {4,5,6} };
int[,] arr5 = new int [,] { {1,2,3}, {4,5,6} };
int[,] arr6 = { {1,2,3}, {4,5,6} };
Initialisieren in einer Programmschleife
Alle Elemente eines Arrays können, wie hier gezeigt, mit einer geschachtelten Schleife initialisiert werden:
int[,] arr7 = new int[5,4];
for(int i=0; i<5; i++)
{
for(int j=0; i<4; j++)
{
arr7[i,j] = 0; // initialize each element to zero
}
}
Die System.Array-Klasse
In .NET Framework werden Arrays als Instanzen der Array-Klasse implementiert. Diese Klasse stellt mehrere nützliche Methoden bereit, z. B. Sort und Reverse.
Im folgenden Beispiel wird veranschaulicht, wie einfach Sie mit diesen Methoden arbeiten können. Zuerst kehren Sie die Elemente eines Arrays mit der Reverse-Methode um. Dann sortieren Sie sie mit der Sort-Methode:
class ArrayMethods
{
static void Main()
{
// Create a string array of size 5:
string[] employeeNames = new string[5];
// Read 5 employee names from user:
System.Console.WriteLine("Enter five employee names:");
for(int i=0; i<employeeNames.Length; i++)
{
employeeNames[i]= System.Console.ReadLine();
}
// Print the array in original order:
System.Console.WriteLine("\nArray in Original Order:");
foreach(string employeeName in employeeNames)
{
System.Console.Write("{0} ", employeeName);
}
// Reverse the array:
System.Array.Reverse(employeeNames);
// Print the array in reverse order:
System.Console.WriteLine("\n\nArray in Reverse Order:");
foreach(string employeeName in employeeNames)
{
System.Console.Write("{0} ", employeeName);
}
// Sort the array:
System.Array.Sort(employeeNames);
// Print the array in sorted order:
System.Console.WriteLine("\n\nArray in Sorted Order:");
foreach(string employeeName in employeeNames)
{
System.Console.Write("{0} ", employeeName);
}
}
}
Ausgabe
Enter five employee names:
Luca
Angie
Brian
Kent
Beatriz
Array in Original Order:
Luca Angie Brian Kent Beatriz
Array in Reverse Order:
Beatriz Kent Brian Angie Luca
Array in Sorted Order:
Angie Beatriz Brian Kent Luca
Siehe auch
Konzepte
Referenz
Arrays (C#-Programmierhandbuch)