C# ArrayList-Tutorial mit Beispielen

โšก Intelligente Zusammenfassung

Die ArrayList in C# ist eine dynamische Auflistung aus dem Namespace System.Collections, die Elemente als Objekte speichert. Im Gegensatz zu einem Array wรคchst und schrumpft sie zur Laufzeit und kann ganze Zahlen, Zeichenketten und boolesche Werte in einer einzigen Liste enthalten.

  • ๐Ÿ”„ Dynamische GrรถรŸenanpassung: ArrayList fรผgt Elemente zur Laufzeit hinzu und entfernt sie, sodass man die Anzahl der Elemente nicht wie bei einem Array im Voraus festlegen kann.
  • ๐Ÿ“ฆ Objektspeicher: Jedes Element wird als Objekt gespeichert, wodurch eine ArrayList gemischte Datentypen wie int, string und bool aufnehmen kann.
  • โž• Kernmethoden: Add, Insert, Remove, RemoveAt, Contains und Sort decken die alltรคglichen Operationen auf einer ArrayList ab.
  • ๐Ÿ“Š Anzahl und Kapazitรคt: Die Eigenschaft โ€žCountโ€œ gibt die aktuelle Anzahl der Elemente zurรผck, wรคhrend โ€žCapacityโ€œ den zugewiesenen Speicherplatz angibt.
  • โœ… Moderne Wahl: Microsoft empfiehlt die generische Liste fรผr neuen Code, da sie Typsicherheit zur Kompilierzeit hinzufรผgt und Boxing vermeidet.
  • ๐Ÿค– KI-Unterstรผtzung: GitHub Copilot generiert Code fรผr ArrayList-Objekte, und ML.NET-Pipelines leiten Daten รผber C#-Collection-Typen weiter.

C# ArrayList

Was ist ArrayList in C#?

Die ArrayList-Sammlung ist รคhnlich wie die Arrays Datentyp in C#. Der grรถรŸte Unterschied besteht in der dynamischen Natur der Array-Listensammlung.

Bei Arrays mรผssen Sie zum Zeitpunkt der Array-Deklaration die Anzahl der Elemente definieren, die das Array enthalten kann. Im Fall der Array-List-Sammlung muss dies jedoch nicht im Voraus erfolgen. Elemente kรถnnen jederzeit zur Array-List-Sammlung hinzugefรผgt oder daraus entfernt werden. Sehen wir uns die fรผr die Array-List-Sammlung verfรผgbaren Operationen genauer an.

Deklaration einer Array-Liste

Die Deklaration einer ArrayList wird unten bereitgestellt. Mit Hilfe des ArrayList-Datentyps wird eine Array-Liste erstellt. Das Schlรผsselwort โ€žnewโ€œ wird verwendet, um ein Objekt einer ArrayList zu erstellen. Das Objekt wird dann der Variablen a1 zugewiesen. Jetzt wird die Variable a1 verwendet, um auf die verschiedenen Elemente der Array-Liste zuzugreifen.

ArrayList a1 = new ArrayList()

Hinzufรผgen von Elementen zu einem Array

Die Add-Methode wird verwendet, um der ArrayList ein Element hinzuzufรผgen. Mit der Add-Methode kรถnnen beliebige Datentypelemente zur Array-Liste hinzugefรผgt werden. Sie kรถnnen der Array-Liste also eine Ganzzahl, eine Zeichenfolge oder sogar einen booleschen Wert hinzufรผgen. Die allgemeine Syntax der Additionsmethode ist unten angegeben

ArrayList.add(element)

Nachfolgend finden Sie einige Beispiele dafรผr, wie die Methode โ€žaddโ€œ verwendet werden kann. Mit der Add-Methode kรถnnen verschiedene Datentypen zur Array List-Sammlung hinzugefรผgt werden.

Unten sehen Sie Beispiele dafรผr, wie wir Ganzzahl-Strings und sogar boolesche Werte zur Array-Listen-Sammlung hinzufรผgen kรถnnen.

  • a1.add(1) โ€“ Dadurch wird der Sammlung ein ganzzahliger Wert hinzugefรผgt
  • a1.add(โ€œBeispielโ€) โ€“ Dadurch wird der Sammlung ein String-Wert hinzugefรผgt
  • a1.add(true) โ€“ Dadurch wird der Sammlung ein boolescher Wert hinzugefรผgt

Sehen wir uns nun an, wie dies auf Codeebene funktioniert. Der gesamte unten genannte Code wird in unsere Konsolenanwendung geschrieben. Der Code wird in unsere Program.cs-Datei geschrieben.

Im folgenden Programm schreiben wir den Code zum Erstellen einer neuen Array-Liste. Wir zeigen auch, wie man Elemente hinzufรผgt und die Elemente der Array-Liste anzeigt.

ArrayList in C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code Erlรคuterung:-

  1. Der erste Schritt dient der Deklaration unserer Array-Liste. Hier deklarieren wir a1 als Variable zur Aufnahme der Elemente unserer Array-Liste.
  2. AnschlieรŸend verwenden wir das Schlรผsselwort add, um die Zahl 1, den String โ€žExampleโ€œ und den booleschen Wert โ€žtrueโ€œ zur Array-Liste hinzuzufรผgen.
  3. AnschlieรŸend verwenden wir die Methode Console.WriteLine, um den Wert jedes Array-Listenelements auf der Konsole anzuzeigen. Sie werden feststellen, dass wir genau wie Arrays รผber ihre Indexpositionen auf die Elemente zugreifen kรถnnen. Um auf die erste Position der Array-Liste zuzugreifen, verwenden wir die Indexposition [0]. Und so weiter und so fort.

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

Ausgang:

ArrayList in C#

Anhand der Ausgabe kรถnnen Sie erkennen, dass alle Elemente aus der Array-Liste an die Konsole gesendet werden.

Schauen wir uns einige weitere Methoden an, die als Teil der ArrayList verfรผgbar sind.

Zu Zรคhlen

Diese Methode wird verwendet, um die Anzahl der Elemente in der ArrayList-Sammlung abzurufen. Nachfolgend finden Sie die allgemeine Syntax dieser Anweisung.

ArrayList.Count() โ€“ Diese Methode gibt die Anzahl der Elemente zurรผck, die die Array-Liste enthรคlt.

Enthรคlt

Diese Methode wird verwendet, um festzustellen, ob ein Element in der ArrayList-Sammlung vorhanden ist. Nachfolgend finden Sie die allgemeine Syntax dieser Anweisung

ArrayList.Contains(element) โ€“ Diese Methode gibt โ€žtrueโ€œ zurรผck, wenn das Element in der Liste vorhanden ist, andernfalls gibt sie โ€žfalseโ€œ zurรผck.

EntfernenBei

Mit dieser Methode wird ein Element an einer bestimmten Position in der ArrayList-Sammlung entfernt. Nachfolgend finden Sie die allgemeine Syntax dieser Anweisung

ArrayList.RemoveAt(index) โ€“ Diese Methode entfernt ein Element von einer bestimmten Position der Array-Liste.

Sehen wir uns nun an, wie dies auf Codeebene funktioniert. Der gesamte unten genannte Code wird in unsere Konsolenanwendung geschrieben. Der Code wird in unsere Program.cs-Datei geschrieben.

Im folgenden Programm schreiben wir den Code, um zu sehen, wie wir die oben genannten Methoden verwenden kรถnnen.

ArrayList in C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code Erlรคuterung:-

  1. Die erste Eigenschaft, die wir sehen, ist also die Count-Eigenschaft. Wir rufen die Count-Eigenschaft der Array-Liste a1 ab und schreiben sie dann in die Konsole.
  2. Im zweiten Teil verwenden wir die Methode โ€žContainsโ€œ, um zu sehen, ob die ArrayList a1 das Element 2 enthรคlt. AnschlieรŸend schreiben wir das Ergebnis รผber den Befehl โ€žWritelineโ€œ in die Konsole.
  3. Um schlieรŸlich die Methode โ€žElement entfernenโ€œ vorzustellen, fรผhren wir die folgenden Schritte aus:
    1. Zuerst schreiben wir den Wert des Elements an Indexposition 1 der Array-Liste in die Konsole.
    2. Dann entfernen wir das Element an Indexposition 1 der Array-Liste.
    3. AbschlieรŸend schreiben wir noch einmal den Wert des Elements an Indexposition 1 der Array-Liste in die Konsole. Diese Schritte geben eine gute Vorstellung davon, ob die Entfernungsmethode ordnungsgemรครŸ funktioniert.

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

Ausgang:

ArrayList in C#

Warum ist der letzte Wert wahr?

Wenn Sie die Abfolge der Ereignisse sehen, wird das Element Beispiel aus dem Array entfernt, da es sich an Position 1 befindet. Position 1 des Arrays wird dann durch das ersetzt, was zuvor an Position 2 war und den Wert โ€žwahrโ€œ hat.

Wie man eine C#-ArrayList durchlรคuft

Das Auslesen aller Elemente einer ArrayList ist eine hรคufige Aufgabe. Da eine ArrayList ihre Elemente als Objekte speichert, kรถnnen Sie diese mit einer foreach-Schleife oder einer for-Schleife, die die Count-Eigenschaft verwendet, durchlaufen. Die foreach-Schleife ist die einfachste Methode, da sie jedes Element der Reihe nach durchlรคuft, ohne einen Index zu benรถtigen.

Das folgende Beispiel erstellt eine ArrayList von Zeichenketten und gibt jeden Wert in einer eigenen Zeile aus. Der Code befindet sich in der Datei Program.cs einer Konsolenanwendung.

Schritt 1) Importieren Sie den Namespace System.Collections und erstellen Sie eine ArrayList mit drei Elementen.

Schritt 2) Verwenden Sie eine foreach-Schleife, um jedes Element als Objekt einzulesen und es in die Konsole auszugeben.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code Erlรคuterung:-

  1. Der Namespace System.Collections wird importiert, damit der Typ ArrayList fรผr das Programm verfรผgbar ist.
  2. Mit der Add-Methode werden drei Zeichenkettenwerte zur ArrayList hinzugefรผgt.
  3. Die foreach-Schleife liest jedes Element als Objekt ein, und die Console.WriteLine-Methode gibt es in einer neuen Zeile aus.

Wenn das Programm ausgefรผhrt wird, gibt es Folgendes aus: Java, Python und Kotlin in separaten Zeilen. Eine for-Schleife mit der Count-Eigenschaft wรผrde dasselbe Ergebnis liefern und Ihnen zusรคtzlich ermรถglichen, die Indexposition jedes Elements zu verwenden.

C# ArrayList-Methoden und -Eigenschaften

Die Klasse `ArrayList` bietet zahlreiche integrierte Methoden und Eigenschaften zur Verwaltung ihrer Elemente. Neben dem Hinzufรผgen und Entfernen von Elementen ermรถglicht sie das Sortieren, Suchen und Umkehren der Auflistung. Die gebrรคuchlichsten Methoden sind unten aufgefรผhrt.

Member Beschreibung
Speichern Fรผgt ein einzelnes Element am Ende der ArrayList hinzu.
Insert Fรผgt ein Element an einer bestimmten Indexposition hinzu.
Entfernen Entfernt das erste Vorkommen eines bestimmten Elements.
EntfernenBei Entfernt das Element an der angegebenen Indexposition.
Lรถschen Entfernt alle Elemente aus der ArrayList.
Sortieren Sortiert die Elemente in aufsteigender Reihenfolge.
Reverse Reverses ist die Reihenfolge der Elemente in der Liste.
Enthรคlt Gibt true zurรผck, wenn das angegebene Element in der Liste existiert.
Index von Gibt die Indexposition eines gegebenen Elements zurรผck.
Zu Zรคhlen Eigenschaft, die die Anzahl der gespeicherten Elemente zurรผckgibt.
Kapazitรคt Eigenschaft, die die Anzahl der Elemente zurรผckgibt, die die Liste aufnehmen kann.

Mithilfe dieser Elemente kรถnnen Sie Elemente hinzufรผgen, suchen, sortieren und entfernen, ohne die Logik selbst schreiben zu mรผssen. Dies ist einer der Hauptvorteile der Verwendung einer Sammlung gegenรผber einem einfachen Array.

Unterschied zwischen ArrayList und List in C#

Sowohl eine ArrayList als auch eine generische Liste Sie speichern eine Gruppe von Elementen, die zur Laufzeit wachsen kรถnnen, unterscheiden sich aber in der Art und Weise, wie sie Datentypen behandeln. Die Kenntnis dieser Unterschiede hilft Ihnen, die richtige Klasse fรผr modernen C#-Code auszuwรคhlen.

Die wichtigsten Unterschiede sind im Folgenden aufgefรผhrt:

  • Typensicherheit: Eine ArrayList speichert jedes Element als Objekt, wรคhrend eine Liste an einen deklarierten Typ gebunden ist und zur Kompilierzeit รผberprรผft wird.
  • Eigenschaften: Eine ArrayList verpackt und entpackt Werttypen wie int, was Zeit kostet, wรคhrend eine List das Verpacken vermeidet und dadurch eine bessere Geschwindigkeit erzielt.
  • Namespace: ArrayList befindet sich in System.Collections, wรคhrend List in System.Collections.Generic zu finden ist.
  • GieรŸen: Beim Lesen einer ArrayList ist oft eine Typumwandlung zurรผck zum ursprรผnglichen Typ erforderlich, eine List gibt jedoch direkt den richtigen Typ zurรผck.
  • Empfehlung: Microsoft Fรผr neue Entwicklungen empfiehlt sich List, da es sicherer, schneller und leichter lesbar ist.

Kurz gesagt, eine ArrayList ist nรผtzlich, um รคlteren Code oder gemischte Datentypen zu verstehen, wรคhrend eine Liste heutzutage fรผr die meisten Anwendungen die bevorzugte Wahl ist.

Hรคufig gestellte Fragen

Ein Array hat eine feste GrรถรŸe und speichert nur einen Datentyp, der bei der Deklaration festgelegt wird. Eine ArrayList hingegen wรคchst und schrumpft zur Laufzeit und speichert jedes Element als Objekt, sodass sie verschiedene Datentypen in einer einzigen Liste enthalten kann.

Die ArrayList wird nicht entfernt, aber Microsoft Fรผr Neuentwicklungen wird es nicht empfohlen. Die generische List-Klasse in System.Collections.Generic ist vorzuziehen, da sie Typsicherheit und eine bessere Performance bietet. Daher verwendet der GroรŸteil des modernen C#-Codes stattdessen List.

Da eine ArrayList Elemente als Objekte speichert, wird beim Hinzufรผgen eines Werttyps wie int dieser in ein Objekt eingebettet (Boxing). Das anschlieรŸende Auslesen und die Umwandlung in den ursprรผnglichen Typ wird als Unboxing bezeichnet. Beide Schritte beeintrรคchtigen die Performance, was bei einer Liste vermieden wird.

Eine ArrayList unterstรผtzt mehrere Leser gleichzeitig, jedoch ist die Thread-Sicherheit ihrer Elemente beim ร„ndern der Sammlung nicht garantiert. Fรผr sichere, multithreadfรคhige Schreibvorgรคnge sollte sie in eine ArrayList eingebettet werden.SyncVerwenden Sie stattdessen eine chronisierte Methode oder eine Concurrent Collection.

Count ist die Anzahl der aktuell in der ArrayList gespeicherten Elemente. Capacity ist die maximale Anzahl an Elementen, die die ArrayList aufnehmen kann, bevor ihre GrรถรŸe angepasst wird. Capacity ist immer gleich oder grรถรŸer als Count und erhรถht sich automatisch beim Hinzufรผgen von Elementen.

Sie kรถnnen die Elemente mithilfe der Methoden `Cast` und `ToList` in eine stark typisierte Liste kopieren oder die Methode `ToArray` aufrufen, um ein Objekt-Array zu erhalten. Die Konvertierung in eine generische Liste ist รผblich, da sie die Typsicherheit wiederherstellt.

Ja. GitHub Copilot kann ArrayList-Deklarationen, Aufrufe hinzufรผgen und entfernen sowie Schleifen anhand eines kurzen Kommentars oder Methodennamens erstellen. Es schlรคgt oft auch die generische List-Version vor, da dies die empfohlene Datenstruktur fรผr neuen C#-Code ist.

ML.NET liest Trainingsdaten รผblicherweise รผber generische Sammlungen wie List und IEnumerable, die der IDataView-Pipeline zugeordnet sind. Eine nicht-generische ArrayList wird selten direkt verwendet, da eine stark typisierte Sammlung die Daten fรผr maschinelles Lernen รผbersichtlich und typsicher hรคlt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: