C#-Array-Tutorial: Erstellen, Deklarieren, Initialisieren

⚡ Intelligente Zusammenfassung

C#-Arrays speichern eine Sammlung von Elementen fester Größe, die denselben Datentyp aufweisen, unter einem Variablennamen. Jedes Element befindet sich an einem nullbasierten Index, sodass Deklaration, Initialisierung und Zugriff auf Werte schnell und vorhersehbar bleiben.

  • 📌 Definition: Ein Array speichert mehrere Werte eines Typs an indizierten Positionen, die über eine einzige Variable erreicht werden.
  • ✅ Erklärung: Ein Datentyp, gefolgt von eckigen Klammern und einem Namen, deklariert ein Array, zum Beispiel Int32[] values.
  • 🔢 Initialisierung: Das neue Schlüsselwort legt die Größe fest, dann erhält jeder Index einen Wert, z. B. values[0]=1.
  • 🔍 Zugang: Bei der nullbasierten Indizierung werden alle Elemente gelesen oder geschrieben, sodass das erste Element values[0] ist und die Zählung bei 0 beginnt.
  • 🔁 Wiederholung: Eine foreach-Schleife durchläuft jedes Element ohne Index, wodurch Bereichsfehler bei größeren Arrays vermieden werden.
  • 🤖 KI-Unterstützung: GitHub Copilot generiert Array-Boilerplate-Code, während ML.NET numerische Arrays als Features für Machine-Learning-Modelle lädt.

C#-Arrays

Was ist ein Array in C#?

Ein Array wird zum Speichern einer Sammlung oder Reihe von Elementen verwendet. Diese Elemente werden vom gleichen Typ sein.

Wenn Sie beispielsweise über ein Array mit Ganzzahlwerten verfügen, könnte das Array eine Sammlung von Werten wie [1, 2, 3, 4] sein. Hier beträgt die Anzahl der Elemente im Array 4.

Arrays sind nützlich, wenn Sie eine Sammlung von Werten desselben Typs speichern möchten. Anstatt also a zu deklarieren Variable Für jedes Element können Sie einfach eine Variable deklarieren.

Diese Variable zeigt auf ein Array oder eine Liste von Elementen, die für die Speicherung der Elemente des Arrays verantwortlich sind.

Schauen wir uns an, wie wir mit Arrays in C# arbeiten können. In unserem Beispiel deklarieren wir ein Array von Ganzzahlen und arbeiten entsprechend mit ihnen.

Beachten Sie, dass der gesamte folgende Code in die Datei Program.cs übernommen wird.

Schritt 1) Ein Array deklarieren – Der erste Schritt besteht darin, ein Array zu deklarieren. Sehen wir uns anhand des folgenden Codebeispiels an, wie wir dies erreichen können.

Arrays in C#

Code Erläuterung:-

  1. Der erste Teil ist der Datentyp. Es gibt den Typ der im Array verwendeten Elemente an. In unserem Fall erstellen wir also ein Array von Ganzzahlen.
  2. Der zweite Teil [ ], der den Rang des Arrays angibt. (Der Rang ist ein Platzhalter, der die Anzahl der Elemente angibt, die das Array enthalten wird.)
  3. Als nächstes folgt der Name des Arrays, in unserem Fall „Werte“. Beachten Sie, dass Sie eine grüne, schnörkelige Unterstreichung sehen. Machen Sie sich darüber keine Sorgen. Das bedeutet nur, dass .Net sagt, dass Sie ein Array deklariert haben, es aber nirgendwo verwenden.

Schritt 2) Der nächste Schritt besteht darin, das Array zu initialisieren. Hier geben wir die Anzahl der Werte an, die das Array enthalten soll. Wir werden auch jedem Element des Arrays Werte zuweisen.

Arrays in C#

Code Erläuterung:-

  1. Zuerst setzen wir die Anzahl der Elemente, die das Array enthalten soll, auf 3. In den eckigen Klammern geben wir also an, dass das Array 3 Elemente enthalten soll.
  2. Anschließend weisen wir jedem Element des Arrays einen Wert zu. Dies geschieht durch Angabe des Variablennamens und der Indexposition im Array. `values[0]` bedeutet also, dass wir einen Wert an der ersten Position des Arrays speichern. Um auf die zweite Position zuzugreifen, verwenden wir die Notation `values[1]` usw.

Hinweis: – In Arrays beginnt die Indexposition bei 0.

Schritt 3) Lassen Sie uns nun die einzelnen Elemente des Arrays in der Konsole anzeigen. Fügen wir den folgenden Code hinzu, um dies zu erreichen.

Arrays in C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code Erläuterung:-

Dies ist der einfache Teil, bei dem wir einfach die Console.WriteLine-Methode verwenden, um jeden Wert des Elements an die Konsole zu senden.

Beachten Sie, dass wir erneut auf jedes Element mithilfe des Array-Variablennamens und der Indexposition zugreifen.

Wenn der obige Code richtig eingegeben und das Programm ausgeführt wird, wird die folgende Ausgabe angezeigt.

Ausgang:

Arrays in C#

In der Ausgabe können Sie alle Werte des Arrays sehen, die in der Konsole angezeigt werden.

Wie man mit foreach ein C#-Array durchläuft

Das Lesen jedes Elements über seinen Index funktioniert zwar, wird aber mühsam, wenn ein Array viele Werte enthält. Die foreach-Schleife bietet eine elegantere Möglichkeit, jedes Element eines Arrays der Reihe nach zu besuchen. tracSie können selbst eine Indexvariable erstellen.

Die foreach-Schleife liest jedes Element des Arrays nacheinander aus und speichert es in einer Schleifenvariablen. Diese Variable wird dann innerhalb des Schleifenkörpers verwendet. Da die Schleife beim letzten Element automatisch abbricht, verhindert foreach, dass Elemente außerhalb des Arrays gelesen werden.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Das obige Beispiel deklariert und initialisiert ein Array mit drei Ganzzahlen und durchläuft es anschließend mit einer foreach-Schleife. Bei jedem Durchlauf wird die Variable ausgleichen Die Funktion empfängt den nächsten Wert, und Console.WriteLine gibt ihn aus. Die Ausgabe besteht aus den Zahlen 1, 2 und 3 in separaten Zeilen.

Wichtige Punkte, die Sie bei der Verwendung von foreach-Schleifen mit Arrays beachten sollten:

  • Die Schleifenvariable ist schreibgeschützt, daher eignet sich foreach am besten zum Lesen von Werten, anstatt sie direkt zu ändern.
  • Um Elemente während des Öffnens zu ändernpingVerwenden Sie stattdessen eine for-Schleife mit einem Index.
  • foreach funktioniert mit eindimensionalen Arrays, mehrdimensionalen Arrays und jeder Sammlung, die Iteration unterstützt.

C# Mehrdimensionale Arrays

Die bisher gezeigten Arrays sind eindimensional, d. h. sie speichern eine einfache Liste von Werten. C# unterstützt auch mehrdimensionale Arrays, die Elemente in einem Raster aus Zeilen und Spalten anordnen. Ein zweidimensionales Array ist die gebräuchlichste Form und eignet sich für Daten wie Matrizen, Spielbretter und Tabellen.

Ein zweidimensionales Array wird durch ein Komma innerhalb der eckigen Klammern deklariert. Jedes weitere Komma fügt eine zusätzliche Dimension hinzu, sodass `int[,]` zweidimensional und `int[,,]` dreidimensional ist. Die Elemente werden dann über einen Index pro Dimension angesprochen.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

Das Array „matrix“ besteht aus zwei Zeilen und zwei Spalten. Das Element „matrix[0, 0]“ gibt den Wert 1 zurück, und „matrix[1, 1]“ gibt den Wert 4 zurück. Die Anzahl der Dimensionen ist bei der Deklaration des Arrays festgelegt, während die Größe jeder Dimension bei der Erstellung des Arrays bestimmt wird.

C# Unregelmäßige Arrays

Ein unregelmäßiges Array ist ein Array, dessen Elemente selbst Arrays sind. Im Gegensatz zu einem rechteckigen, mehrdimensionalen Array kann jedes innere Array eine unterschiedliche Länge haben. Daher wird ein unregelmäßiges Array oft auch als Array von Arrays bezeichnet. Diese Flexibilität ist hilfreich, wenn Zeilen naturgemäß unterschiedlich viele Werte enthalten.

Sie deklarieren ein unregelmäßiges Array mit zwei Paaren eckiger Klammern und erstellen dann jedes innere Array separat. Das folgende Beispiel erzeugt ein unregelmäßiges Array, in dem die erste Zeile drei Werte und die zweite Zeile zwei Werte enthält.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

Der Ausdruck jagged[0][2] liest das dritte Element der ersten Zeile, also 3, und jagged[1][1] liest das zweite Element der zweiten Zeile, also 5. Da jede Zeile ein separates Array ist, nutzen Jagged Arrays den Speicher effizient, wenn die Zeilenlängen variieren, obwohl ein zusätzlicher Schritt zur Initialisierung jedes inneren Arrays erforderlich ist.

Häufig gestellte Fragen

Die `Length`-Eigenschaft gibt die Gesamtanzahl der Elemente in einem C#-Array zurück. Beispielsweise liefert `values.Length` für ein dreielementiges Array den Wert 3. Bei mehrdimensionalen Arrays gibt `GetLength(dimension)` die Größe jeder einzelnen Dimension zurück.

Ein AC#-Array hat eine feste Größe, die bei der Erstellung festgelegt wird, während eine Liste dynamisch wächst und schrumpft. Arrays sind für feste Datenmengen schneller und verursachen weniger Overhead, wohingegen Listen für Sammlungen geeignet sind, deren Elementanzahl sich zur Laufzeit ändert.

Ein Standard-C#-Array speichert Elemente eines einzigen deklarierten Typs, daher ist das Mischen von Typen nicht zulässig. Um verschiedene Typen zu speichern, deklarieren Sie ein `object[]`-Array oder verwenden Sie eine Auflistung wie `ArrayList`, wobei jedoch in beiden Fällen die Typsicherheit zur Kompilierzeit verloren geht.

Die statische Methode `Array.Sort` sortiert die Elemente eines C#-Arrays direkt in aufsteigender Reihenfolge. Übergeben Sie das Array an `Array.Sort(values)` und verwenden Sie `Array`.Reverse Anschließend in absteigender Reihenfolge. Die Sortierung funktioniert mit Zahlen, Zeichenketten und anderen vergleichbaren Datentypen.

Die Methode `Array.Copy` kopiert einen Bereich von Elementen aus einem Array in ein anderes, während die Methode `Clone` eine flache Kopie des gesamten Arrays erstellt. Die Zuweisung einer Array-Variablen zu einer anderen kopiert lediglich die Referenz, nicht die zugrunde liegenden Elemente.

Eine IndexOutOfRangeException tritt auf, wenn auf eine nicht existierende Array-Position zugegriffen wird, beispielsweise auf `values[5]` in einem dreielementigen Array. Da C#-Arrays nullbasiert sind, reichen gültige Indizes von 0 bis `Length minus 1`. Überprüfen Sie daher immer zuerst den Index.

Ja. GitHub Copilot schlägt Array-Deklarationen, Initialisierungen und Schleifenlogik aus einem Kommentar oder Methodennamen in Visual Studio vor und VS Code. RevPrüfen Sie jeden Vorschlag sorgfältig auf korrekte Größen- und Indexgrenzen, da Copilot Fehler wie Off-by-One und Out-of-Range-Fehler verursachen kann.

ML.NET stellt Merkmalsvektoren und Modelleingaben als C#-Arrays dar, typischerweise als float[]-Arrays. Trainingsdaten werden in Arrays oder Spannen geladen, und Vorhersagen liefern Arrays mit den entsprechenden Werten. Die feste Größe und die schnelle Indizierung von Arrays machen sie effizient für Machine-Learning-Pipelines.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: