English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Array (Array)

Variablen werden verwendet, um Literalwerte zu speichern, während Arrays zur Speicherung mehrerer Literalwerte verwendet werden.

Ein Array ist ein Datenstruktur, die eine festgelegte Anzahl von Textwerten desselben Datentyps (Elementen) speichert. Arrayelemente werden kontinuierlich im Speicher gespeichert.

In C# können Arrays dreier Typen sein: Ein dimensionales Array, mehrdimensionales Array und Zähneförmiges Array. Hier werden Sie ein-dimensionalen Arrays kennenlernen.

Das folgende Diagramm zeigt die Darstellungsform des Arrays.

Arraydarstellung

Arraydeklaration und Initialisierung

Sie können eckige Klammern verwenden, um den Typ der Arrayelemente zu spezifizieren und ein Array zu deklarieren.

int[] evenNums;  // Ganzzahlen-Array
string[] cities; // String-Array

Die folgenden Anweisungen deklarieren und fügen in einer Anweisung Werte zu einem Array hinzu.

int[] evenNums = new int[5]{ 2, 4, 6, 8, 10 }; 
string[] cities = new string[3]{ "Mumbai", "London", "New York" };

In diesem Fall kann das Array evenNums maximal fünf Ganzzahlen speichern. new int[5] Zahl in Klammern 5 ist die Größe des Arrays. Ebenso beträgt die Größe des Arrays cities3.Arrayelemente werden in einer Liste von Kommas getrennten Elementen in Klammern {} hinzugefügt.

Variablentypen für Arrays können mit var deklariert werden, ohne eckige Klammern [] zu verwenden.

var evenNums = new int[]{ 2, 4, 6, 8, 10}; 
var cities = new string[]{ "Mumbai", "London", "New York" };

Wenn Sie bei der Deklaration Arrayelemente hinzufügen möchten, ist size optional. Der Compiler schließt die Größe aus der Anzahl der Elemente in den Klammern ab, wie folgt.

int[] evenNums = { 2, 4, 6, 8, 10}; 
string[] cities = { "Mumbai", "London", "New York" }

Nachfolgendes Beispiel zeigt die ungültige Erklärung eines Arrays.

//Die Größe muss angegeben werden 
int[] evenNums = new int[]; 
//Die Anzahl der Elemente muss der angegebenen Größe entsprechen 
int[] evenNums = new int[5] { 2, 4 };
//var kann nicht mit dem Array-Initialisierungsaufruf verwendet werden
var evenNums = { 2, 4, 6, 8, 10};

Verzögerte Initialisierung

Es ist nicht erforderlich, ein Array in einer einzigen Anweisung zu deklarieren und zu initialisieren. Sie können zunächst ein Array deklarieren und es später mit dem new-Operator initialisieren.

int[] evenNums;
evenNums = new int[5];
// oder
evenNums = new int[]{ 2, 4, 6, 8, 10 };

Zugriff auf Arrayelemente

Sie können Elemente eines Arrays mit Indizes abrufen. Ein Index ist eine Nummer, die mit jedem Arrayelement verbunden ist, beginnend mit Index 0 bis zur Größe des Arrays-1 beenden.

Nachfolgendes Beispiel zeigt die Verwendung von Indizes, um/Aktualisieren und abrufen Sie Arrayelemente.

int[] evenNums = new int[5];
evenNums[0] = 2;
evenNums[1] = 4;
//evenNums[6] = 12;  //werfen Sie einen Laufzeitfehler IndexOutOfRange aus
Console.WriteLine(evenNums[0]);  //Ausgabe 2
Console.WriteLine(evenNums[1});  //Ausgabe 4

Bitte beachten Sie, dass das Hinzufügen von Elementen, die über die angegebene Größe hinausgehen, den IndexOutOfRangeException-Aufruf auslöst.

Verwenden Sie for-Schleifen, um auf das Array zuzugreifen

Verwenden Sie for-Schleifen, um auf Arrayelemente zuzugreifen. Verwenden Sie das length-Attribut des Arrays im Bedingungensexpression des for-Loops.

int[] evenNums = { 2, 4, 6, 8, 10 };
for(int i = 0; i < evenNums.Length; i++){
    Console.WriteLine(evenNums[i]);  
}
for(int i = 0; i < evenNums.Length; i++){
    evenNums[i] = evenNums[i] + 10;  // Aktualisieren Sie den Wert jedes Elements10
}

Verwenden Sie foreach-Schleifen, um auf das Array zuzugreifen

Verwenden Sie foreach-Schleifen, um den Wert der Arrayelemente zu lesen, ohne Index zu verwenden.

int[] evenNums = { 2, 4, 6, 8, 10}; 
string[] cities = { "Mumbai", "London", "New York" }; 
foreach(var item in evenNums){
    Console.WriteLine(item);   
}
foreach(var city in cities){
    Console.WriteLine(city);
}

LINQ-Methode

Alle Arrays in C# sind von der abstrakten Basisklasse System.Array abgeleitet.

Die Array-Klasse implementiert das IEnumerable-Interface, sodass Sie LINQ- Erweiterungsmethoden wie Max(), Min(), Sum(), reverse() und andere verwenden können.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
nums.Max(); // Rückgabe16
nums.Min(); // Rückgabe6
nums.Sum(); // Rückgabe55
nums.Average(); // Rückgabe55

Das System.Array-Klasse enthält Methoden zur Erstellung, Operation, Suche und Sortierung von Arrays.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
Array.Sort(nums); // Sortieren Sie das Array 
Array.Reverse(nums); // Sortieren Sie das Array in absteigender Reihenfolge
Array.ForEach(nums, n => Console.WriteLine(n)); // Iterieren Sie durch das Array
Array.BinarySearch(nums, 5);// Binärsuche

Übergeben Sie ein Array als Parameter

Man kann ein Array als Parameter an eine Methode übergeben. Ein Array ist ein Referenztyp, daher kann diese Methode den Wert der Arrayelemente ändern.

public static void Main() {
    int[] nums = { 1, 2, 3, 4, 5 };
    UpdateArray(nums); 
    foreach(var item in nums)
        Console.WriteLine(item);   
}
                    
public static void UpdateArray(int[] arr)
{
    for(int i = 0; i < arr.Length; i++)
        arr[i] = arr[i] + 10;   
}

Ernsthaftes Verständnis Mehrdimensionales Array und Zahnräder-Array.