C#-Sammlungs-Tutorial mit Beispielen
⚡ Intelligente Zusammenfassung
Sammlungen in C# bieten eine flexible Möglichkeit, Gruppen von Objekten zu speichern und zu verwalten. Im Gegensatz zu Arrays wachsen und schrumpfen Sammlungen zur Laufzeit, und die Namespaces System.Collections und System.Collections.Generic stellen vorgefertigte Datentypen für Listen, Wörterbücher, Stapel und Warteschlangen bereit.

In unserem vorherigen Tutorial haben wir gelernt, wie wir Arrays in C# verwenden können. Lassen Sie uns einen kurzen Überblick darüber geben: Arrays werden in der Programmierung verwendet, um eine Reihe verwandter Objekte zu gruppieren. Man könnte also ein Array oder eine Reihe von Ganzzahlen erstellen, auf die über einen Variablennamen zugegriffen werden könnte.
Was sind Sammlungen in C#?
Sammlungen ähneln Arraysbietet es eine flexiblere Möglichkeit, mit einer Gruppe von Objekten zu arbeiten.
Bei Arrays ist Ihnen sicherlich aufgefallen, dass Sie vorher die Anzahl der Elemente in einem Array definieren müssen. Dies musste bei der Deklaration des Arrays erfolgen.
Aber in einer Sammlung müssen Sie die Größe der Sammlung nicht vorher definieren. Sie können jederzeit Elemente hinzufügen oder sogar Elemente aus der Sammlung entfernen. Dieses Kapitel konzentriert sich darauf, wie wir mit den verschiedenen in C# verfügbaren Sammlungen arbeiten können.
System.Collections-Klassen
Das .NET Framework gruppiert die ursprünglichen, nicht generischen Sammlungsklassen im Namespace System.Collections. Die folgende Tabelle fasst die wichtigsten Typen zusammen, die Sie sofort verwenden können.
| Kollektion | Beschreibung |
| Anordnungsliste | Die ArrayList-Auflistung ähnelt den Arrays Datentyp in C#. Der größte Unterschied besteht in der dynamischen Natur der Array-Listensammlung. |
| Stapeln | Der Stack ist eine spezielle Sammlung, die das LIFO-Prinzip (Last In First Out) repräsentiert. |
| Queues | Die Warteschlange ist eine spezielle Sammlung, die das Prinzip „First In, First Out“ repräsentiert. |
| Hash-tabelle | Eine Hashtabelle ist eine spezielle Sammlung, die zum Speichern von Schlüssel-Wert-Paaren verwendet wird. |
| SortedList | Die SortedList ist eine Sammlung, die Schlüssel-Wert-Paare standardmäßig in aufsteigender Schlüsselreihenfolge speichert. |
| BitArray | Ein Bit-Array ist ein Array von Datenstrukturen, in denen Bits gespeichert werden. |
Generische Sammlungen in C#
Die oben genannten nicht-generischen Klassen speichern jedes Element als allgemeines Objekt. Das bedeutet, dass der Compiler den Typ nicht überprüfen kann und das Programm einen geringen Mehraufwand für das Boxing von Werten in Kauf nehmen muss. Um dieses Problem zu lösen, wurde in C# der Namespace `System.Collections.Generic` eingeführt, in dem jede Sammlung an einen deklarierten Typ gebunden ist.
Eine generische Sammlung wie z. B. Liste Da nur Zeichenketten akzeptiert werden, werden Fehler bereits zur Kompilierzeit erkannt und beim Auslesen eines Elements ist keine Typumwandlung erforderlich. Dies macht generische Sammlungen sicherer, schneller und lesbarer, weshalb sie in modernem C#-Code die Standardwahl sind.
Die gebräuchlichsten generischen Sammlungen sind unten aufgeführt:
- Liste : Eine skalierbare, indexbasierte Liste, der generische Ersatz für ArrayList.
- Wörterbuch : Speichert Schlüssel-Wert-Paare mit schnellen, hashbasierten Suchvorgängen.
- HashSet : Speichert nur eindeutige Werte und unterstützt Mengenoperationen wie Vereinigung.
- Warteschlange : Eine FIFO-Sammlung (First In, First Out), die generische Version von Queue.
- Stapel : Eine Last-In-First-Out-Sammlung, die generische Version von Stack.
- SortierteListe : Hält Schlüssel-Wert-Paare nach Schlüssel in aufsteigender Reihenfolge sortiert.
C#-Listensammlungsbeispiel
Die Liste ist die am häufigsten verwendete generische Datenstruktur, da sie sich wie ein dynamisches Array verhält. Das folgende Beispiel erstellt eine Liste von Zeichenketten, fügt Elemente hinzu und entfernt sie, liest ihre Größe und gibt anschließend die verbleibenden Werte aus. Der gesamte Code befindet sich in der Datei Program.cs.
Schritt 1) Importieren Sie den Namespace System.Collections.Generic und deklarieren Sie eine Liste von Zeichenketten.
Schritt 2) Fügen Sie Elemente mit der Add-Methode hinzu und löschen Sie sie mit der Remove-Methode.
Schritt 3) Lesen Sie die Count-Eigenschaft und durchlaufen Sie dann die Liste mit einer foreach-Schleife.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code Erläuterung:-
- Der Namespace System.Collections.Generic wird importiert, damit der Listentyp für das Programm verfügbar ist.
- Eine neue Liste Es wird ein Ordner namens „tutorials“ erstellt, und mit der Add-Methode werden drei Namen hinzugefügt.
- Die Remove-Methode löscht den Wert „Python“, womit zwei Einträge in der Liste verbleiben.
- Die Count-Eigenschaft gibt die Anzahl der Elemente zurück, und die foreach-Schleife gibt die verbleibenden Werte der Reihe nach aus.
Wenn das Programm ausgeführt wird, gibt es zuerst die Anzahl der 2, Gefolgt von Java und Kotlin in separaten Zeilen. Dies zeigt, wie eine Sammlung ihre Größe zur Laufzeit ändert, was bei einem festen Array nicht möglich ist.
Unterschied zwischen Arrays und Collections in C#
Sowohl ein Array Eine Sammlung gruppiert verwandte Elemente unter einem Namen, doch verhalten sie sich im Programmablauf unterschiedlich. Zu wissen, wann man welches Element verwendet, hilft dabei, saubereren und effizienteren Code zu schreiben.
Die wichtigsten Unterschiede sind im Folgenden aufgeführt:
- Größe Ein Array hat eine feste Länge, die bei der Deklaration festgelegt wird, während eine Sammlung jederzeit wachsen oder schrumpfen kann.
- Typbehandlung: Ein Array speichert einen einzelnen Typ, während eine Sammlung mit Generics typsicher sein kann oder, wenn sie nicht generisch ist, Objekte gemischter Typen enthalten kann.
- Ort: Arrays sind in die Sprache integriert, während Sammlungsklassen in den Namespaces System.Collections und System.Collections.Generic zu finden sind.
- Integrierte Funktionen: Collections bieten fertige Methoden zum Hinzufügen, Entfernen, Suchen und Sortieren von Elementen, während Arrays nur einen einfachen indizierten Zugriff ermöglichen.
- beste Verwendung: Wählen Sie ein Array, wenn die Anzahl der Elemente bekannt und fest ist, und eine Collection, wenn sich die Anzahl während der Programmausführung ändert.
Kurz gesagt, Arrays eignen sich am besten für Daten fester Größe, während Sammlungen die Flexibilität bieten, die die meisten realen Anwendungen benötigen.
